设计模式练习(3)——抽象工厂模式
2017-01-18 17:18
337 查看
抽象工厂模式
一、题目:某软件公司要推出一款新的手机游戏软件,该软件支持IOS、Android和Windows Phone等多个智能手机操作系统平台,针对不同的手机操作系统,该游戏软件提供了不同的游戏操作控制类(OperationController)和游戏界面控制类(InterfaceController),并提供的相应的工厂类来封装这些类的初始化过程。该软件要求具有较好的扩展性,以支持新的操作系统平台,为了满足上述要求,试采用抽象工厂模式对其进行设计。
(1)绘制抽象工厂模式结构视图
(2)给出实例类图并实现代码。
二、所用模式结构视图:
三、实例类图:
四、实例实现代码:
(因为区分,所以在类的前面加了Gj19)
抽象产品-游戏界面控制类
package AbstractFactoryPattern; /** * 抽象产品-游戏界面控制类 * @author gong * */ public interface Gj19IInterfaceController { public void Interface(); }
具体产品-Android游戏界面控制类
package AbstractFactoryPattern; /** * 具体产品-Android游戏界面控制类 * @author gong * */ public class Gj19AndroidInterfaceController implements Gj19IInterfaceController { @Override public void Interface() { System.out.println("Android游戏界面控制"); } }
具体产品-IOS游戏界面控制类
package AbstractFactoryPattern; /** * 具体产品-IOS游戏界面控制类 * @author gong * */ public class Gj19IOSInterfaceController implements Gj19IInterfaceController { @Override public void Interface() { System.out.println("IOS游戏界面控制"); } }
具体产品-WindowsPhone游戏界面控制类
package AbstractFactoryPattern; /** * 具体产品-WindowsPhone游戏界面控制类 * @author gong * */ public class Gj19WindowsPhoneInterfaceController implements Gj19IInterfaceController { @Override public void Interface() { System.out.println("WindowsPhone游戏界面控制"); } }
抽象产品-游戏操作控制类
package AbstractFactoryPattern; /** * 抽象产品-游戏操作控制类 * @author gong * */ public interface Gj19IOperationController { public void Operator(); }
具体产品-Andriod游戏操作控制类
package AbstractFactoryPattern; /** * 具体产品-Andriod游戏操作控制类 * @author gong * */ public class Gj19AndroidOperationController implements Gj19IOperationController { @Override public void Operator() { System.out.println("Andriod游戏操作控制"); } }
具体产品-IOS游戏操作控制类
package AbstractFactoryPattern; /** * 具体产品-IOS游戏操作控制类 * @author gong * */ public class Gj19IOSOperationController implements Gj19IOperationController { @Override public void Operator() { System.out.println("IOS游戏操作控制"); } }
具体产品-WindowsPhone游戏操作控制类
package AbstractFactoryPattern; /** * 具体产品-WindowsPhone游戏操作控制类 * @author gong * */ public class Gj19WindowsPhoneOperationController implements Gj19IOperationController { @Override public void Operator() { System.out.println("WindowsPhone游戏操作控制"); } }
抽象工厂–游戏控制类
package AbstractFactoryPattern; /** * 抽象工厂--游戏控制类 * @author gong * */ public interface Gj19GameController { //游戏操作控制 public Gj19IOperationController OperationController(); //游戏界面控制 public Gj19IInterfaceController InterfaceController(); }
具体工厂–Android游戏控制类
package AbstractFactoryPattern; /** * 具体工厂--Android游戏控制类 * @author gong * */ public class AndroidController implements Gj19GameController { //Android游戏操作控制 @Override public Gj19IOperationController OperationController() { return new Gj19AndroidOperationController(); } //Android游戏界面控制 @Override public Gj19IInterfaceController InterfaceController() { return new Gj19AndroidInterfaceController(); } }
具体工厂–IOS游戏控制类
package AbstractFactoryPattern; /** * 具体工厂--IOS游戏控制类 * @author gong * */ public class IOSController implements Gj19GameController { //IOS游戏操作控制 @Override public Gj19IOperationController OperationController() { return new Gj19IOSOperationController(); } //IOS游戏界面控制 @Override public Gj19IInterfaceController InterfaceController() { return new Gj19IOSInterfaceController(); } }
具体工厂– WindowsPhone游戏控制类
package AbstractFactoryPattern; /** * 具体工厂-- WindowsPhone游戏控制类 * @author gong * */ public class WindowsPhoneController implements Gj19GameController { // WindowsPhone游戏操作控制 @Override public Gj19IOperationController OperationController() { return new Gj19WindowsPhoneOperationController(); } // WindowsPhone游戏界面控制 @Override public Gj19IInterfaceController InterfaceController() { return new Gj19WindowsPhoneInterfaceController(); } }
测试抽象工厂模式
package AbstractFactoryPattern; /** * 测试抽象工厂模式 * @author gong * */ public class TestAbstractFactoryPattern { public static void main(String[] args) { Gj19GameController gj19GameController; //抽象工厂--游戏控制类 Gj19IInterfaceController gj19IInterfaceController; //游戏界面控制类 Gj19IOperationController gj19IOperationController; //游戏操作控制类 gj19GameController = new AndroidController(); //具体工厂--Android游戏控制类 gj19IInterfaceController = gj19GameController.InterfaceController(); gj19IOperationController = gj19GameController.OperationController(); gj19IInterfaceController.Interface(); gj19IOperationController.Operator(); } }
五、运行结果:
相关文章推荐
- 设计模式练习--抽象工厂模式
- 设计模式笔记-抽象工厂模式
- .NET设计模式-抽象工厂模式(Abstract Factory)
- 设计模式C#描述——抽象工厂模式
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 设计模式——创建型模式之 Abstract Factory抽象工厂模式
- [导入]C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)
- 设计模式C#描述——抽象工厂模式
- Java设计模式圣经连载(03)-抽象工厂模式
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 设计模式实践(抽象工厂模式应用)—通信录的优化过程
- 设计模式之抽象工厂模式
- AspectJ实现设计模式(四)——抽象工厂模式
- .NET设计模式:抽象工厂模式(Abstract Factory)
- [导入]C#面向对象设计模式纵横谈(4):Abstract Factory 抽象工厂模式(创建型模式)
- 设计模式学习笔记(三)——Abstract Factory抽象工厂模式
- .Net设计模式之抽象工厂模式(Abstract Factory)
- .NET设计模式(3):抽象工厂模式(Abstract Factory)(转)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 设计模式(3)-抽象工厂模式(Abstract Factory)