千家信息网

如何理解java开发的工厂方法模式及抽象工厂验证

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,本篇内容介绍了"如何理解java开发的工厂方法模式及抽象工厂验证"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2024年09月21日如何理解java开发的工厂方法模式及抽象工厂验证

本篇内容介绍了"如何理解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开发的工厂方法模式及抽象工厂验证"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0