温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-10-11 10:04:55 来源:亿速云 阅读:127 作者:iii 栏目:开发技术

本篇内容介绍了“如何理解java开发的工厂方法模式及抽象工厂验证”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

目录
  • 工厂方法模式示例

  • 抽象工厂模式验证


工厂方法模式示例

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

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

代码结构如下:

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

代码如下:

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();
    }
}

运行结果:

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

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

抽象工厂模式验证

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

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

代码结构如下:

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

代码如下:

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();
    }
}

运行结果如下:

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

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

“如何理解java开发的工厂方法模式及抽象工厂验证”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI