嗯,今天是工厂模式的最后一讲,可是今天不用你猜了,我已经告诉你讲什么了——抽象工厂。曾经,我们一起学习了简单工厂和工厂方法,他们有各自的优点和缺点。那么,今天是我们的抽象工厂,看看今天你能发现什么吧!?

抽象工厂在意图上是创建又相互关联或互相依赖的对象。并且,抽象工厂像是在工厂方法的基础上引入了分类管理的概念。我们用一个例子来说明:

工厂生产的所有产品都用都用大写字母来标明它们的型号,比如冰箱,就有“冰箱-A",“冰箱-B",同样,其他的产品也都是遵守这个编号规则,于是就有了一下产品家族树

冰箱:

  1. 冰箱-A

  2. 冰箱-B

洗衣机:

  1. 洗衣机-A

  2. 洗衣机-B

我们为冰箱和洗衣机设计接口。

冰箱接口:
public interface IceBox {
}
洗衣机接口:
public interface Washer {
}

接下来,我们来创建具体的产品。

冰箱
public class IceBoxA implements IceBox{
public IceBoxA(){System.out.println("IceBoxA ...");
}
}
public class IceBoxB implements IceBox{
public IceBoxB(){System.out.println("IceBoxB ...");
}
}
洗衣机
public class WasherA implements Washer{public WasherA(){System.out.println("washerA ...");}
}
public class WasherB implements Washer{
public WasherB(){System.out.println("washerB ...");
}
}

到此,产品部分我们准备好了,接下来我们来处理工厂部分,我们先来定义工厂行为接口

public interface Factory {
IceBox createBox();
Washer createWasher();
}

接下来我创造具体的工厂类,我们根据上面产品的接口,把型号A的产品分为一类,由一个工厂来管理,把型号为B的产品有另一个工厂管理,根据这个分类,我们可以实现如下的两个具体工厂类

工厂A
public class FactoryA implements Factory{@Overridepublic IceBox createBox() {return new IceBoxA();}@Overridepublic Washer createWasher() {return new WasherA();}
}
工厂B
public class FactoryB implements Factory{@Overridepublic IceBox createBox() {return new IceBoxB();}@Overridepublic Washer createWasher() {return new WasherB() ;}
}

好了,我的介绍完成了,你看出了什么?我猜你一定看到了分类管理的痕迹对吧!嘿嘿,很聪明哦!好吧,记住他吧,我们的抽象工厂,And 工厂设计模式!

转载于:https://blog.51cto.com/zixia/1266997

工厂设计模式——抽象工厂相关推荐

  1. 简单工厂和 工厂设计模式--抽象工厂模式--Java实现

    简单工厂不是23种设计模式 工厂方法·模式 :定义一个创建对象得接口,但是让实现这个接口的类来决定实例化哪一个类,工厂方法能使得类的实例化推迟到子类中进行 工厂方法缺点: 增加了类的数量,增加复杂度 ...

  2. java设计模式---抽象工厂模式

    工厂模式在项目中是常常用到的,有人说只有大项目才会用到,小项目是体会不出来.其实使用设计模式与项目的大小没有实质性的联系.设计模式是经验的总结而不是衡量项目大小的标准. 以开发项目的DAO层为例,在项 ...

  3. 设计模式--简单工厂VS工厂VS抽象工厂

    前几天我一直在准备大学毕业生,始终绑起来,如今,终于有时间去学习设计模式.我们研究今天的话题是植物三口之家的设计模式的控制--简单工厂VS工厂VS抽象工厂. 经过细心推敲,我们不难得出:工厂模式是简单 ...

  4. (创建模式 上)设计模式——工厂、抽象工厂 C++/Python3实现

    简介 设计模式是为了解决一些出现的问题设计的解决方案.是长时间经验的总结,是根据不同问题从而提出并且实践出来的解决办法.使用不同的设计模式可以解决不同的问题. 设计模式可以分为三种大类别:分别是创建型 ...

  5. [设计模式] ------ 抽象工厂模式

    抽象工厂模式 抽象工厂模式,就是对工厂方法模式加以改进而已,其实就是用简单工厂模式的套路创建各个工厂,后面和工厂模式就一模一样了. 其实就是相当于将创建哪个工厂的权利再次放给调用端. 调用端在调用的时 ...

  6. JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·抽象工厂——理解“开放封闭”

    JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·抽象工厂--理解"开放封闭" 一个不简单的简单工厂引发的命案 在实际的业务中,我们往往面对的复杂度并非数个类 ...

  7. 创建设计模式 - 抽象工厂设计模式

    创建设计模式 - 抽象工厂设计模式 欢迎来到java示例中的Abstract Factory Design Pattern.摘要工厂设计模式是创造模式之一.抽象工厂模式几乎类似于工厂模式,除了它更像工 ...

  8. Head First设计模式读书笔记四 简单工厂 工厂模式 抽象工厂模式

    本文示例代码材料源自Head First设计模式 以前整理自己整理的链接: 工厂模式 https://blog.csdn.net/u011109881/article/details/56541580 ...

  9. 系统架构技能之设计模式-抽象工厂模式

    一.上篇回顾 上篇我们主要讲述了简单工厂模式和工厂模式.并且分析了每种模式的应用场景和一些优缺点,我们现在来回顾一下: 简单工厂模式:一个工厂负责所有类型对象的创建,不支持无缝的新增新的类型对象的创建 ...

最新文章

  1. 【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)
  2. Webview离线功能(优先cache缓存+cache缓存管理)
  3. Image Semantic Segmentation之DeepLab两个坑
  4. Swoole的全双工、半双工和单工
  5. 计算机英语阅读理解,2017年12月英语四级阅读理解50篇:学习计算机
  6. db2 控制台执行创建函数语句_DB2数据库中创建定义函数
  7. linux 虚拟 设备,Linux中的虚拟网络设备
  8. Azkaban入门简介
  9. 网络编程资源大集合(包含前端、java、linux、安卓、github开源项目、开发工具等)
  10. 禁不住诱惑?不可描述的应用之下暗藏巨大风险
  11. matlab数值型数据默认为,matlab默认数据类型
  12. 磁盘基础知识-磁盘的构成
  13. Dart Web开发环境搭建及新建运行项目
  14. Pycharm完整中文教程及安装配置
  15. 浏览器兼容性测试工具Browser Sandbox
  16. 高中数学必考知识点:二元一次不等式(组)及简单的线性规划问题
  17. TexturePacker 自定义模板
  18. CTF show 萌新区解题报告 (二)
  19. 亚马逊是如何成为全球最佳雇主的?
  20. 动态改变eachers图表高_考研英语写作词汇

热门文章

  1. 面试时,如何向HR解释自己频繁跳槽?
  2. C语言编译php环境,vscode中C语言编译环境的配置方法(分享)
  3. linux git 显示 分支,Linux 终端显示 Git 当前所在分支
  4. 数据结构和算法 D3
  5. 【python】拉普拉斯和sobel对图像处理
  6. 快速安装Tensorflow
  7. java exception信息_可能通过Java Exceptions暴露敏感信息?
  8. jdk 安装cmd运行java_windows下安装jdk,cmd下编译运行java程序一点心得
  9. 最准的中文文本相似度计算工具
  10. 车辆检测及型号识别,准确率接近90%