工厂设计模式——抽象工厂
嗯,今天是工厂模式的最后一讲,可是今天不用你猜了,我已经告诉你讲什么了——抽象工厂。曾经,我们一起学习了简单工厂和工厂方法,他们有各自的优点和缺点。那么,今天是我们的抽象工厂,看看今天你能发现什么吧!?
抽象工厂在意图上是创建又相互关联或互相依赖的对象。并且,抽象工厂像是在工厂方法的基础上引入了分类管理的概念。我们用一个例子来说明:
工厂生产的所有产品都用都用大写字母来标明它们的型号,比如冰箱,就有“冰箱-A",“冰箱-B",同样,其他的产品也都是遵守这个编号规则,于是就有了一下产品家族树
冰箱:
冰箱-A
冰箱-B
洗衣机:
洗衣机-A
洗衣机-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
工厂设计模式——抽象工厂相关推荐
- 简单工厂和 工厂设计模式--抽象工厂模式--Java实现
简单工厂不是23种设计模式 工厂方法·模式 :定义一个创建对象得接口,但是让实现这个接口的类来决定实例化哪一个类,工厂方法能使得类的实例化推迟到子类中进行 工厂方法缺点: 增加了类的数量,增加复杂度 ...
- java设计模式---抽象工厂模式
工厂模式在项目中是常常用到的,有人说只有大项目才会用到,小项目是体会不出来.其实使用设计模式与项目的大小没有实质性的联系.设计模式是经验的总结而不是衡量项目大小的标准. 以开发项目的DAO层为例,在项 ...
- 设计模式--简单工厂VS工厂VS抽象工厂
前几天我一直在准备大学毕业生,始终绑起来,如今,终于有时间去学习设计模式.我们研究今天的话题是植物三口之家的设计模式的控制--简单工厂VS工厂VS抽象工厂. 经过细心推敲,我们不难得出:工厂模式是简单 ...
- (创建模式 上)设计模式——工厂、抽象工厂 C++/Python3实现
简介 设计模式是为了解决一些出现的问题设计的解决方案.是长时间经验的总结,是根据不同问题从而提出并且实践出来的解决办法.使用不同的设计模式可以解决不同的问题. 设计模式可以分为三种大类别:分别是创建型 ...
- [设计模式] ------ 抽象工厂模式
抽象工厂模式 抽象工厂模式,就是对工厂方法模式加以改进而已,其实就是用简单工厂模式的套路创建各个工厂,后面和工厂模式就一模一样了. 其实就是相当于将创建哪个工厂的权利再次放给调用端. 调用端在调用的时 ...
- JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·抽象工厂——理解“开放封闭”
JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·抽象工厂--理解"开放封闭" 一个不简单的简单工厂引发的命案 在实际的业务中,我们往往面对的复杂度并非数个类 ...
- 创建设计模式 - 抽象工厂设计模式
创建设计模式 - 抽象工厂设计模式 欢迎来到java示例中的Abstract Factory Design Pattern.摘要工厂设计模式是创造模式之一.抽象工厂模式几乎类似于工厂模式,除了它更像工 ...
- Head First设计模式读书笔记四 简单工厂 工厂模式 抽象工厂模式
本文示例代码材料源自Head First设计模式 以前整理自己整理的链接: 工厂模式 https://blog.csdn.net/u011109881/article/details/56541580 ...
- 系统架构技能之设计模式-抽象工厂模式
一.上篇回顾 上篇我们主要讲述了简单工厂模式和工厂模式.并且分析了每种模式的应用场景和一些优缺点,我们现在来回顾一下: 简单工厂模式:一个工厂负责所有类型对象的创建,不支持无缝的新增新的类型对象的创建 ...
最新文章
- 【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)
- Webview离线功能(优先cache缓存+cache缓存管理)
- Image Semantic Segmentation之DeepLab两个坑
- Swoole的全双工、半双工和单工
- 计算机英语阅读理解,2017年12月英语四级阅读理解50篇:学习计算机
- db2 控制台执行创建函数语句_DB2数据库中创建定义函数
- linux 虚拟 设备,Linux中的虚拟网络设备
- Azkaban入门简介
- 网络编程资源大集合(包含前端、java、linux、安卓、github开源项目、开发工具等)
- 禁不住诱惑?不可描述的应用之下暗藏巨大风险
- matlab数值型数据默认为,matlab默认数据类型
- 磁盘基础知识-磁盘的构成
- Dart Web开发环境搭建及新建运行项目
- Pycharm完整中文教程及安装配置
- 浏览器兼容性测试工具Browser Sandbox
- 高中数学必考知识点:二元一次不等式(组)及简单的线性规划问题
- TexturePacker 自定义模板
- CTF show 萌新区解题报告 (二)
- 亚马逊是如何成为全球最佳雇主的?
- 动态改变eachers图表高_考研英语写作词汇
热门文章
- 面试时,如何向HR解释自己频繁跳槽?
- C语言编译php环境,vscode中C语言编译环境的配置方法(分享)
- linux git 显示 分支,Linux 终端显示 Git 当前所在分支
- 数据结构和算法 D3
- 【python】拉普拉斯和sobel对图像处理
- 快速安装Tensorflow
- java exception信息_可能通过Java Exceptions暴露敏感信息?
- jdk 安装cmd运行java_windows下安装jdk,cmd下编译运行java程序一点心得
- 最准的中文文本相似度计算工具
- 车辆检测及型号识别,准确率接近90%