Sunny 软件公司欲推出一款新的手机游戏软件,该软件能够支持 IOS 和 Android 等多个智能手机操作系统平台。针对不同的手机操作系统,该游戏软件提供了不同的游戏操作控制(OperationController)类和游戏界面控制(InterfaceController)类,并提供相应的工厂类来封装这些类的初始化过程。该软件要求有较好的扩展性以支持新的操作系统平台,为了满足上述需求,试采用抽象工厂模式对其进行设计。
一、类结构图
抽象工厂角色类:设计为名称为 AbstractFactory 的接口,面向抽象产品角色类编程,包含抽象创建游戏操作方法 createOperationController()、抽象创建游戏界面方法 createInterfaceController();
具体工厂角色类:设计为抽象工厂角色类 AbstractFactory 的子类,包括具体工厂角色类 IosConcreteFactory、具体工厂角色类 AndroidConcreteFactory,分别实现相应的 createOperationController()抽象创建游戏操作方法、相应的 createInterfaceController() 抽象创建游戏界面方法;
抽象产品角色类:设计为两个名称分别为 AbstractOperationController、AbstractInterfaceController 的抽象类,抽象产品角色类 AbstractOperationController 包含抽象方法 operationControl()、抽象产品角色类 AbstractInterfaceController 包含抽象方法 interfaceControl();
具体产品角色类:设计为抽象产品角色类的子类,包括四个具体产品角色类,分别为 IosOperationController 具体产品角色类、AndroidOperationController 具体产品角色类、IosInterfaceController 具体产品角色类、AndroidInterfaceController 具体产品角色类,具体产品角色类分别实现对应的抽象方法 operationControl()、抽象方法 interfaceControl()。
二、典型实现代码
抽象系统控制工厂类:抽象工厂角色类
// 抽象系统控制工厂类:抽象工厂角色类public abstract class AbstractControlFactory { public abstract AbstractOperationController createOperationController(); public abstract AbstractInterfaceController createInterfaceController();}
复制代码
具体 Ios 系统控制工厂类:具体工厂角色类
// 具体Ios系统控制工厂类:具体工厂角色类public class IosControlFactory extends AbstractControlFactory { @Override public AbstractOperationController createOperationController() { return new IosOperationController(); }
@Override public AbstractInterfaceController createInterfaceController() { return new IosInterfaceController(); }}
复制代码
具体 Android 系统控制工厂类:具体工厂角色类
// 具体Android系统控制工厂类:具体工厂角色类public class AndroidControlFactory extends AbstractControlFactory { @Override public AbstractOperationController createOperationController() { return new AndroidOperationController(); }
@Override public AbstractInterfaceController createInterfaceController() { return new AndroidInterfaceController(); }}
复制代码
抽象操作控制类:抽象产品角色类
// 抽象操作控制类:抽象产品角色类public abstract class AbstractOperationController { public abstract void operationControl();}
复制代码
抽象界面控制类:抽象产品角色类
// 抽象界面控制类:抽象产品角色类public abstract class AbstractInterfaceController { public abstract void interfaceControl();}
复制代码
具体 Ios 系统操作控制类:具体产品角色类
// 具体Ios系统操作控制类:具体产品角色类public class IosOperationController extends AbstractOperationController { @Override public void operationControl() { System.out.println("Ios系统操作控制"); }}
复制代码
具体 Android 系统操作控制类:具体产品角色类
// 具体Android系统操作控制类:具体产品角色类public class AndroidOperationController extends AbstractOperationController{ @Override public void operationControl() { System.out.println("Android系统操作控制"); }}
复制代码
具体 Ios 系统界面控制类:具体产品角色类
// 具体Ios系统界面控制类:具体产品角色类public class IosInterfaceController extends AbstractInterfaceController { @Override public void interfaceControl() { System.out.println("Ios系统界面控制"); }}
复制代码
具体 Android 系统界面控制类:具体界面控制类
// 具体Android系统界面控制类:具体界面控制类public class AndroidInterfaceController extends AbstractInterfaceController { @Override public void interfaceControl() { System.out.println("Android系统界面控制"); }}
复制代码
客户端代码:
public class Client { public static void main(String[] args) { AbstractOperationController operationController; AbstractInterfaceController interfaceController; AbstractControlFactory factory;
factory = new AndroidControlFactory(); operationController = factory.createOperationController(); interfaceController = factory.createInterfaceController(); operationController.operationControl(); interfaceController.interfaceControl(); System.out.println();
factory = new IosControlFactory(); operationController = factory.createOperationController(); interfaceController = factory.createInterfaceController(); operationController.operationControl(); interfaceController.interfaceControl(); }}
复制代码
编译并运行程序,输出如下结果:
Android系统操作控制Android系统界面控制
Ios系统操作控制Ios系统界面控制
复制代码
评论