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

网友投稿 281 2022-09-23


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

结论

以上仅给出示例http://代码,非常简单,为了加深工厂方法模式的体验,建议大家开发完整的Txt、Excel文件转换代码,然后界面层设计两个菜单,分别是Txt和Excel转换。抽象工厂模式体验,则可以查看jdk源码中java.sql包数据库处理部分源码。

以上就是java开发的工厂方法模式及抽象工厂验证示例的详细内容,更多关于java工厂方法模式及抽象工厂验证的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:防火墙虚拟化技术介绍第二篇(vmware 虚拟化防火墙)
下一篇:【数通面试私房菜之BGP专题】第三期:BGP属性详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~