写点什么

设计模式的艺术 第六章抽象工厂设计模式练习(开发一款新的手机游戏软件,该软件能够支持 IOS 和 Android 等多个智能手机操作系统平台。针对不同手机操作系统,该游戏软件提供了不同的游戏操作控制类和游戏界面控制类,并提供相应的工厂类来封装这些类的初始化过程)

作者:代廉洁
  • 2022 年 9 月 07 日
    浙江
  • 本文字数:2407 字

    阅读完需:约 8 分钟

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


发布于: 刚刚阅读数: 6
用户头像

代廉洁

关注

还未添加个人签名 2019.10.15 加入

还未添加个人简介

评论

发布
暂无评论
设计模式的艺术 第六章抽象工厂设计模式练习(开发一款新的手机游戏软件,该软件能够支持IOS和Android等多个智能手机操作系统平台。针对不同手机操作系统,该游戏软件提供了不同的游戏操作控制类和游戏界面控制类,并提供相应的工厂类来封装这些类的初始化过程)_设计模式的艺术_代廉洁_InfoQ写作社区