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系统界面控制
复制代码
评论