java开发的工厂方法模式及抽象工厂验证示例

目录

  • 工厂方法模式示例
  • 抽象工厂模式验证
  • 结论

工厂方法模式示例 开发一个数据格式转换工具,将不同数据源如:txt、excel等格式文件,转换为XML格式输出,需考虑今后其他格式的文件也需要转换为xml格式的扩展性,利用设计模式的有关知识进行设计。
解决思路,使用工厂方法模式完成该功能的设计,设计类图如下:
java开发的工厂方法模式及抽象工厂验证示例
文章图片

代码结构如下:
java开发的工厂方法模式及抽象工厂验证示例
文章图片

代码如下:
public interface Creator {Convertor getConvertor(); }public class ExcelConvertorCreator implements Creator {@Overridepublic Convertor getConvertor() {return new ExcelConvertor(); }}public class TxtConvertorCreator implements Creator {@Overridepublic Convertor getConvertor() {return new TxtConvertor(); }}public interface Convertor {void transform(); }public class ExcelConvertor implements Convertor {@Overridepublic void transform() {System.out.println("excel转换器"); }}public class TxtConvertor implements Convertor {@Overridepublic void transform() {System.out.println("txt文件转换器"); }}

测试代码如下:
public class Testor {publicvoid factoryMethodTest() {Creator creator = new TxtConvertorCreator(); Convertor convertor = creator.getConvertor(); convertor.transform(); }}

运行结果:
java开发的工厂方法模式及抽象工厂验证示例
文章图片

验证结论:使用工厂方法模式完成文件转换器,满足开闭原则,在类的划分上满足单一职责原则,使得程序易扩展、易维护等特征;同时调用方依赖于抽象,不依赖于具体,实现了依赖倒置原则,所有的变量使用接口(抽象类)定义,具体的实现类可以替换它,遵循了里氏替换原则。

抽象工厂模式验证 某公司开发一个手机游戏软件,该软件需要支持IOS、windows Mobile等操作系统平台,针对不同操作系统,提供不同操作控制类和游戏界面控制类,需考虑今后其他操作系统也需要使用这款手游,利用设计模式的有关知识进行设计。
解决思路,使用抽象工厂模式完成该功能的设计,设计类图如下:
java开发的工厂方法模式及抽象工厂验证示例
文章图片

代码结构如下:
java开发的工厂方法模式及抽象工厂验证示例
文章图片

代码如下:
public interface InterfaceController {void init(); }public class IosInterfaceControllerImpl implements InterfaceController {@Overridepublic void init() {System.out.println("苹果界面"); }}public class WinInterfaceControllerImpl implements InterfaceController {@Overridepublic void init() {System.out.println("windows界面"); }}public interface OprationController {public void init(); }public class IosOprationControllerImpl implements OprationController {@Overridepublic void init() {System.out.println("苹果操作逻辑"); }}public class WinOprationControllerImpl implements OprationController {@Overridepublic void init() {System.out.println("windows操作逻辑"); }}public interface AbstractFactory {InterfaceController getInterfaceContorller(); OprationControllergetOprationController(); }public class IosFactoryImpl implements AbstractFactory {@Overridepublic InterfaceController getInterfaceContorller() {return new IosInterfaceControllerImpl(); }@Overridepublic OprationController getOprationController() {return new IosOprationControllerImpl(); }}public class WinFactoryImpl implements AbstractFactory {@Overridepublic InterfaceController getInterfaceContorller() {return new WinInterfaceControllerImpl(); }@Overridepublic 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(); }}

运行结果如下:
java开发的工厂方法模式及抽象工厂验证示例
文章图片

验证结论:抽象工厂模式与工厂方法模式很类似,工厂方法模式提供了一个生产对象的方法,而抽象工厂模式提供多个i生产不同对象的方法,此种设计符合开闭原则,程序易维护、易扩展,如:该游戏系统需要在鸿蒙系统上运行,则需要新开发一个具体的鸿蒙工厂,及与鸿蒙操作系统相关的界面控制类与游戏操作类即可。另外,需要注意的是,抽象工厂模式在扩展产品族时很容易,但是在产品等级结构发生变化时,非常不容易。

结论 以上仅给出示例代码,非常简单,为了加深工厂方法模式的体验,建议大家开发完整的Txt、Excel文件转换代码,然后界面层设计两个菜单,分别是Txt和Excel转换。抽象工厂模式体验,则可以查看jdk源码中java.sql包数据库处理部分源码。
【java开发的工厂方法模式及抽象工厂验证示例】 以上就是java开发的工厂方法模式及抽象工厂验证示例的详细内容,更多关于java工厂方法模式及抽象工厂验证的资料请关注脚本之家其它相关文章!

    推荐阅读