本篇内容介绍了“如何理解java开发的工厂方法模式及抽象工厂验证”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
工厂方法模式示例
抽象工厂模式验证
开发一个数据格式转换工具,将不同数据源如:txt、excel等格式文件,转换为XML格式输出,需考虑今后其他格式的文件也需要转换为xml格式的扩展性,利用设计模式的有关知识进行设计。
解决思路,使用工厂方法模式完成该功能的设计,设计类图如下:
代码结构如下:
代码如下:
public interface Creator { Convertor getConvertor(); } public class ExcelConvertorCreator implements Creator { @Override public Convertor getConvertor() { return new ExcelConvertor(); } } public class TxtConvertorCreator implements Creator { @Override public Convertor getConvertor() { return new TxtConvertor(); } } public interface Convertor { void transform(); } public class ExcelConvertor implements Convertor { @Override public void transform() { System.out.println("excel转换器"); } } public class TxtConvertor implements Convertor { @Override public void transform() { System.out.println("txt文件转换器"); } }
测试代码如下:
public class Testor { public void factoryMethodTest() { Creator creator = new TxtConvertorCreator(); Convertor convertor = creator.getConvertor(); convertor.transform(); } }
运行结果:
验证结论:使用工厂方法模式完成文件转换器,满足开闭原则,在类的划分上满足单一职责原则,使得程序易扩展、易维护等特征;同时调用方依赖于抽象,不依赖于具体,实现了依赖倒置原则,所有的变量使用接口(抽象类)定义,具体的实现类可以替换它,遵循了里氏替换原则。
某公司开发一个手机游戏软件,该软件需要支持IOS、windows Mobile等操作系统平台,针对不同操作系统,提供不同操作控制类和游戏界面控制类,需考虑今后其他操作系统也需要使用这款手游,利用设计模式的有关知识进行设计。
解决思路,使用抽象工厂模式完成该功能的设计,设计类图如下:
代码结构如下:
代码如下:
public interface InterfaceController { void init(); } public class IosInterfaceControllerImpl implements InterfaceController { @Override public void init() { System.out.println("苹果界面"); } } public class WinInterfaceControllerImpl implements InterfaceController { @Override public void init() { System.out.println("windows界面"); } } public interface OprationController { public void init(); } public class IosOprationControllerImpl implements OprationController { @Override public void init() { System.out.println("苹果操作逻辑"); } } public class WinOprationControllerImpl implements OprationController { @Override public void init() { System.out.println("windows操作逻辑"); } } public interface AbstractFactory { InterfaceController getInterfaceContorller(); OprationController getOprationController(); } public class IosFactoryImpl implements AbstractFactory { @Override public InterfaceController getInterfaceContorller() { return new IosInterfaceControllerImpl(); } @Override public OprationController getOprationController() { return new IosOprationControllerImpl(); } } public class WinFactoryImpl implements AbstractFactory { @Override public InterfaceController getInterfaceContorller() { return new WinInterfaceControllerImpl(); } @Override public OprationController getOprationController() { return new WinOprationControllerImpl(); } }
测试代码如下:
public class AbstractFactoryTest { public void test(){ AbstractFactory abstractFactory = new WinFactoryImpl(); OprationController oprationController = abstractFactory.getOprationController(); InterfaceController interfaceController = abstractFactory.getInterfaceContorller(); oprationController.init(); interfaceController.init(); } }
运行结果如下:
验证结论:抽象工厂模式与工厂方法模式很类似,工厂方法模式提供了一个生产对象的方法,而抽象工厂模式提供多个i生产不同对象的方法,此种设计符合开闭原则,程序易维护、易扩展,如:该游戏系统需要在鸿蒙系统上运行,则需要新开发一个具体的鸿蒙工厂,及与鸿蒙操作系统相关的界面控制类与游戏操作类即可。另外,需要注意的是,抽象工厂模式在扩展产品族时很容易,但是在产品等级结构发生变化时,非常不容易。
“如何理解java开发的工厂方法模式及抽象工厂验证”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。