文档文库
手机版
投诉建议
热门搜索:
心得体会
演讲稿
思想汇报
首页
心得体会
学习心得体会
培训心得体会
军训心得体会
社会实践
作风建设
工作心得体会
教育心得体会
演讲稿
演讲稿格式
演讲稿范文
竞聘演讲稿
师德演讲稿
三分钟演讲稿
思想汇报
思想汇报范文
转正思想汇报
大学生思想汇报
季度思想汇报
教师思想汇报
工作计划
工作计划格式
工作计划开头
工作计划结尾
总结与计划
工作计划模板
工作总结
年终工作总结
年度工作总结
个人工作总结
实习报告
实习报告范文
实习计划范文
实习鉴定范文
实习报告内容
个人简历
求职简历
简历范文
简历模板
简历表格
简历格式
祝福语
春节
除夕
元宵
端午节
合同范文
合同范本
合同样本
合同范本格式
首页
>
工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
发布时间: 来源:
文档文库
小
中
大
字号:
手机查看
>
>
>
>
工厂模式
,
简单工厂模式
,
抽象工厂模式三
者有什么区别
问题:
工厂模式
,
简单工厂模式
,
抽象工厂模式三者有什么区别
回
答:
工厂模式,也叫做说虚构造器,在简单工厂中间插入了一个具
体产品工厂,
这个工厂知道产品构造时候的具体细节,
而简单工厂模
式的产品具体构造细节是在一个个
if/else
分支,
或者在
switch/case
分支里面的。工厂模式的好处就在于将工厂和产品之间的耦合降低,
将具体产品的构造过程放在了具体工厂类里面。
在以后扩展产品的时
候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加
产品,而不需要修改原有的代码。而在简单工厂中,如果要增加一个
产品,则需要修改工厂类,增加
if/else
分支,或者增加一个
case
分
支,
工厂模式符合软件开发中的
OCP
原则
(
opencloseprinciple
)
,
对扩展开放,对修改关闭。
抽象工厂模式:这个模式我总是感觉和
builder
模式非常相似。
工厂方法模式提供的是对一个产品的等级模式,
,而抽象工厂方
法提供的是对多个产品的等级模式,
注意,
这里的多个具体产品之间
是相互耦合的,
也就是说这里的抽象工厂提供的产品之间是存在某种
联系的。
有人做如下的比较:
1
>
>
>
>
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:
多个抽象产品类,
每个抽象产品类可以派生出多
个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
区别:
工厂方法模式只有一个抽象产品类,
而抽象工厂模式有多
个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,
而
抽象工厂模式可以创建多个。
下面是一个形象的比喻:
无论是简单工厂模式、
工厂模式还是抽象工厂模式,
它们本质上
都是将不变的部分提取出来,
将可变的部分留作接口,
以达到最大程
度上的复用。拿一个生产水杯(
cup
)的工厂举例:起初,不用工厂
模式,
我必须在生产水杯之前知道水杯的材料和形状等水杯的所有特
征才能生产,这就是我们的
newCup(;
这个
Cup
必须是具体的。厂
主发现同一形状的被子,只是材料不同
,
如一个是玻璃
(glass
的,一
个是瓷
(china
的
,
但是确要两条生产线,显然有资源浪费的嫌疑。现
在厂主生产杯子时先不让生产线知道我要产的是玻璃的还是瓷的,
而
是让它在不知道具体材料的情况下先做它能做的,等到它把模具做
好,
只需要向其中填充玻璃原料或者瓷原料就可以造出同一形状的具
2
>
>
>
>
体杯子了。但是很可惜,
java
并不能
new
一个抽象的
Cup
,所以就
有
了
简
单
工
厂
模
式
。
原
来
是
Cup
cup=new
Cup;
现
在
是
SimpleCupFactory.createCup(StringcupName,
根据
cup
的名字
生产
Cup,
而
createCup
返回的是一个实现了
Cup
接口或抽象类的
具体
Cup
。简单抽象工厂模式有一个问题,就是当我现在想生产一
个同样形状的铁杯时,
工厂里并没有定义相应的处理流程,
只能更改
createCup
方法,
这就不合理了。
我现在只是想生产铁杯,
你只要在
最后的时候把玻璃原料换成铁的不就行了吗,
干嘛还要更改整条生产
线呢
于是就有了工厂模式。原来生产线在生产模具的时候还要考虑
是为玻璃杯生产的模具还是为铁杯生产的模具,现在它不用管了。
CupFactory.createCup(
创建
Cup.CupFactory
是接口或抽象类。
实现它的具体子类会创建符合
Cup
接口的具体
Cup
。那么现在厂主
想要生产水壶
(kettle
,用工厂模式就不得不再造一条水壶生产线,
能不能在水杯生产线同时生产水壶呢
这就是抽象工厂模式。在原
CupFactory
中加一个
createKettle(
方法,用来生产水壶。
3
本文来源:
https://www.2haoxitong.net/k/doc/8b4fbbe61611cc7931b765ce05087632311274a9.html
《工厂模式,简单工厂模式,抽象工厂模式三者有什么区别.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
文档为doc格式
分享到:
相
关
案
例
初中文言文句子翻译方法,,,,,,,课堂实录 文言文翻译器句子翻译
2024-04-26
简单的实习单位鉴定意见
2024-04-26
星级酒店客房前台全套培训
2024-04-26
怎么夸男生帅气的高情商句子
2024-04-26
253套剪映专业版精品模板
2024-04-26
白话文翻译文言文
2024-04-26
文言文到白话文
2024-04-26
没赶上飞机的搞笑说说
2024-04-26
文言文 转换
2024-04-26
思想道德与法治社会实践报告
2024-04-26
相关推荐
1
初中毕业25年再相聚同学会发言稿_演讲稿
2
为什么俄罗斯保留的大型国有企业是中国的好多倍?
3
我的偶像诸葛亮精编版
4
关于接力赛的作文800字
5
乡镇2005年党建及组织工作总结
6
如何制作U盘WIN7启动盘
7
浙江省杭州市2019年中考数学试题
8
人教版七年级下册语文暑假作业:第1部分第6单元
9
七年级语文下册 第四单元 13 叶圣陶先生二三事字词汇总 新人教版(通用)
10
2017安全的主题班会
推荐内容
【年终工作总结】2018年内勤年终工作总结范文4篇
八年级历史上册 第15课 星星之火,可以燎原同步测试 北师大版
蜗牛与黄鹂鸟说课稿
五年级作文诗歌:我是月羊羊
七年级英语周周清试题
推敲教案[1]
公司工会群监员、协管员培训试题(答案)
小学生两弹一星手抄报
传染病管理项目责任和工作流程
小学四年级散文:岁月过歌,从一路走来