设计模式之建造型-抽象工厂模式(3)
来源:互联网 发布:网络与生活作文2000字 编辑:程序博客网 时间:2024/05/22 13:52
定义:为创建一组相关或者相互依赖的对象提供一个接口,而无需指定它们的具体类。
抽象工厂的定义很抽象,下面我们贴出抽象工厂的UML图
在抽象工厂中有如下角色
AbstractFactory:抽象工厂,用来创建不同的产品
ConcreatFactory:具体工厂,实现抽象工厂创建产品的方法
AbstractProduct:抽象产品,用于声明每个产品的抽象方法
ConcreatProduct :具体产品,实现抽象产品的方法,生成具体的产品
下面我们还是举之前电脑的例子来用代码实现抽象工厂模式,假设现在的产品不仅仅有电话,还有pad ,相应的工厂中不仅仅生成电话,还生产平板,相应的,平板也具备打电话的功能。
定义产品接口 pad和phone
public interface Pad { void call();}
public interface Phone { void call();}
定义工厂接口
public interface IFactory { Phone creatPhone(); Pad creatPad();}
定义华为的pad和phone实现类
public class Huaweipad implements Pad { @Override public void call() { Log.i("tag:","小米平板打电话"); }}
public class HuaWeiPhone implements Phone { @Override public void call() { Log.i("tag","小米手机打电话"); }}
定于小米的pad 和phone实现类
public class XiaoMipad implements Pad { @Override public void call() { Log.i("tag:","华为平板打电话"); }}
public class XiaoMiPhone implements Phone { @Override public void call() { Log.i("tag","华为手机打电话"); }}
然后实现工厂接口,生成各自的产品
public class HuaweiFactory implements IFactory { @Override public Phone creatPhone() { return new HuaWeiPhone(); } @Override public Pad creatPad() { return new Huaweipad(); }}
public class XiaoMiFactory implements IFactory { @Override public Phone creatPhone() { return new XiaoMiPhone(); } @Override public Pad creatPad() { return new XiaoMipad(); }}
最后测试类
public class Test { public static void main(String[] args) { IFactory factory=new HuaweiFactory(); factory.creatPhone().call(); factory.creatPad().call(); factory=new XiaoMiFactory(); factory.creatPhone().call(); factory.creatPad().call(); }}
可以看出,客户端只是创建的工厂类不同,产生了不一样的结果,对比工厂相关的3种模式:1,首先从简单工厂进化到工厂方法,是因为工厂方法弥补了简单工厂对修改开放的弊端,即简单工厂违背了开闭原则。
2,从工厂方法进化到抽象工厂,是因为抽象工厂弥补了工厂方法只能创造一个系列的产品的弊端。
阅读全文
2 0
- 设计模式之建造型-抽象工厂模式(3)
- 设计模式之建造型-简单工厂模式(2)
- 抽象工厂与建造设计模式结合
- 设计模式(3)之抽象工厂模式
- 设计模式之3--抽象工厂模式
- 23种设计模式2--创建型模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式)
- 23种设计模式----创建型模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式)
- java设计模式(创建型)之抽象工厂模式
- 创建型:设计模式之抽象工厂模式(二)
- 《大话设计模式》——学习笔记之"创建型模式"(单例&工厂方法&抽象工厂&建造者&原型)
- 设计模式(3):抽象工厂模式
- 设计模式(3):抽象工厂模式
- 设计模式(3):抽象工厂模式
- 建造型——抽象工厂模式
- (3)设计模式之抽象工厂模式(创建型模式)
- 设计模式之工厂模式系列(简单工厂,工厂模式,抽象工厂模式)
- 设计模式之Factory(工厂模式,抽象工厂)
- 24种设计模式之工厂模式--(抽象工厂)
- OpenDaylight-Boron学习笔记: 5 OpenFlowPlugin模块
- 小米手机通过USB连接电脑,共享使用电脑的网络
- angularJS中$applay()及$digest()理解
- 深入理解Java:注解(Annotation)自定义注解入门
- avcodec_decode_video2()
- 设计模式之建造型-抽象工厂模式(3)
- 事件管理
- Activity堆栈管理及其使用
- Maven学习总结(20)——Maven项目通用三级版本号说明
- 学习 ui-router (三):多个命名的视图
- 关于Callback的一些浅见
- input各种属性的使用
- Hbase 集群部署
- android 目录结构