Java编程开发设计模式之--抽象工厂模式(Abstract Factory)
2016-06-12 13:35
681 查看
在工厂方法模式中,创建产品类完全依赖于工厂类本身,一旦有扩展需求,就必须对工厂类进行修改,这其实是违背设计原则中的闭包原则的,因此,在设计思路存在瑕疵。解决这一问题,就得用到本文中将详述的抽象工厂模式。即抽取工厂类接口,创建多个工厂类,这样如有新需要增加的功能,可以直接增加新的工厂类,不需要修改现存代码。先看下面类图:详细代码如下:首先建立一个共同接口
public interface Connector { public boolean connect(String url); }
接着建立两个上面接口的实现类
public class Bluetooch implements Connector { @Override public boolean connect(String url) { System.out.println(String.format("%s.%s called!",this.getClass().getName(),"connect()")); return false; } }
public class Httprequest implements Connector { @Override public boolean connect(String url) { System.out.println(String.format("%s.%s called!",this.getClass().getName(),"connect()")); return false; } }然后提供一个工厂类接口
public interface Producer { public Connector produce(); }之后就可以根据需要增加工厂类
public class BluetoochFactory implements Producer { @Override public Connector produce() { return new Bluetooch(); } }
public class HttprequestFactory implements Producer { @Override public Connector produce() { return new Httprequest(); } }最后测试类
public class WorkClass { public void test() { Producer producer = new BluetoochFactory(); Connector connectorBluetooch = producer.produce(); connectorBluetooch.connect("bluetooch://"); } }
输出:
designpattern.creator.Bluetooch.connect() called!抽象工厂模式的优势不言自明,可扩展性强,对于一些新增加功能,比如,新增加Socket通信类只需要做一个实现类实现Connector接口,再同时做一个工厂类,实现Producer 接口,完工!无需去改动已有的代码。
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- Android ADT 23.0.0无法更新到23.0.2问题解决方案
- 设计模式之创建型模式
- 浅谈设计模式的学习
- 架构纵横谈之二 ---- 架构的模式与要点
- C#动态创建button的方法
- PostgreSQL教程(二):模式Schema详解
- Ruby设计模式编程之适配器模式实战攻略
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- Ruby设计模式编程中对外观模式的应用实例分析
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- 代理区独立模式的说明
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 详解组合模式的结构及其在Ruby设计模式编程中的运用