Java编程开发设计模式之--抽象工厂模式(Abstract Factory)
来源:互联网 发布:软件数据保密协议 编辑:程序博客网 时间:2024/05/22 13:51
在工厂方法模式中,创建产品类完全依赖于工厂类本身,一旦有扩展需求,就必须对工厂类进行修改,这其实是违背设计原则中的闭包原则的,因此,在设计思路存在瑕疵。解决这一问题,就得用到本文中将详述的抽象工厂模式。即抽取工厂类接口,创建多个工厂类,这样如有新需要增加的功能,可以直接增加新的工厂类,不需要修改现存代码。先看下面类图:
详细代码如下:
首先建立一个共同接口
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 接口,完工!无需去改动已有的代码。
0 0
- Java编程开发设计模式之--抽象工厂模式(Abstract Factory)
- Java开发之设计模式--抽象工厂模式(Abstract Factory)
- Java设计模式之抽象工厂(Abstract Factory)模式
- JAVA设计模式之抽象工厂(Abstract Factory)模式
- 【java设计模式】之 抽象工厂(Abstract Factory)模式
- 【java设计模式】之 抽象工厂(Abstract Factory)模式
- 【java设计模式】之 抽象工厂(Abstract Factory)模式
- Java开发中的23种设计模式之二:抽象工厂模式(Abstract Factory)
- Java:设计模式之抽象工厂模式(Abstract Factory)
- JAVA设计模式之 抽象工厂模式【Abstract Factory Pattern】
- JAVA设计模式之 抽象工厂模式【Abstract Factory Pattern】
- 【设计模式】之 Abstract Factory 抽象工厂
- 设计模式之:抽象工厂(Abstract Factory)
- 设计模式之抽象工厂Abstract Factory
- 设计模式之抽象工厂Abstract Factory
- .Net设计模式之抽象工厂模式(Abstract Factory)
- 设计模式(二)之Abstract Factory - 抽象工厂模式
- .NET设计模式之抽象工厂模式(Abstract Factory)
- idea 的10大常用快捷键
- Unity3d文件部署到IIS,图解 配置说明
- C++之overload、shadow和override的区别
- myBatis批量添加,修改和删除
- HDU 4317 状压DP
- Java编程开发设计模式之--抽象工厂模式(Abstract Factory)
- jQuery EasyUI tree的 使用
- 怎么修改button切换选中状态的时候背景出现一个小蓝点的问题
- 百度地图sdk定位所在的城市名称和街道信息
- android how to add vcs 版本控制
- Unity3D和网页数据交互的基本原理
- JavaScriptCore基本概念和基本使用(Swift)
- [iOS 字符串] 字符串后几位截取
- [转]堆和栈的区别