定义
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
UML图
个人理解:比如一个A类中定义了若干方法,而在另一个B类中需要调用A类其中的一个方法,当然,我们可以直接 new,但是,这样做的结果就是将A类的所有方法都引用了进来,此时,不仅违背了java面对对象的编程思想,还与A类的复杂构造逻辑耦合。但是如果我们此时向A类中传递一个参数或多个参数,只引用我们所需要的的方法,此时需要创建一个接口。这种模式便称之为工厂模式。它能够有效的避免方法的暴露。当然,根据业务逻辑而定。
分类
代码以生产手机和 PAD 为例:
手机车间
生产手机的机器
1、简单工厂:
简单工厂模式其实不是一个设计模式,反而比较像一种编程习惯。主要我们定义一个非常简单的类主要负责帮我们生产不同的产品
测试
结果
苹果手机开始生产...1
2、简单工厂(反射实现):
利用反射Class.forName(clz.getName()).newInstance()实现的简单工厂
测试
结果
华为手机开始生产...1
3、方法工厂
通过定义不同的方法,然后随机调用实现,例如 Controller 层调用 Servers 层中的方法。
测试
结果
三星手机开始生产...1
4、普通工厂
把简单工厂中具体的工厂类,划分成两层:抽象工厂层+具体的工厂子类层
测试
结果
三星手机开始生产...1
5、抽象工厂
用于多个产品一起生产。为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类
测试
结果
比较
内容 | 简单工厂 | 简单工厂(反射) | 方法工厂 | 普通工厂 | 抽象工厂 |
---|---|---|---|---|---|
特点 | 一个具体的类,通过createPhones方法利用if或者 switch创建产品并返回,静态 | 一个具体的类,通过createPhones方法利用反射机制生成对象返回 | 不同产品,提供不同的生产方法 | 把简单工厂中具体的工厂类,划分成抽象工厂层和具体的工厂子类层 | 多产品系 |
优点 | 简单,易理解 | 较简单工厂,代码简单 | 容错率高,方便 | 松耦合,面向对象(具体方法) | 面向对象,多产品实现共同生产 |
缺点 | 扩展性差,紧耦合 | 使用发射,效率低下 | 代码较复杂 | 每次新增一个具体产品类,也要同时新增一个具体工厂类 | 容易造成紧耦合 |
THE END
推荐阅读:理想在线
-
切实提高毛囊成活率 大麦微针植发帮助发友解决
11月21日,大麦微针植发沈阳分院喜迎乔迁。大麦微针植发医疗集团运营总监王丽、辽宁省美容美发行业协会秘书长唐道贺、中国医科大学附属盛京医院沈阳雍森医院皮肤科主任...
2020-11-25 -
京东超市打造匠人IP 推动老字号“出圈”引领
9月17日,由京东超市主办的“上潮国味盛典”活动以“云发布”的形式在线举行。会上京东超市发布了“老字号品牌振兴三大扶持计划”,并将与各大老字号协会及老字号品牌共...
2020-09-18 -
箭牌家居集团展开电商经销商大会 共创美好20
乘风破浪,箭指未来|箭牌家居集团展开电商经销商大会8月29日,“乘风破浪,箭指未来”2020箭牌家居集团电商经销商大会于广州南沙花园酒店隆重召开。大会邀请了AR...
2020-09-01 -
世纪汇“萌力水果镇”趣味登场 5折秒杀萌动全
2020年暑假在阳光后如期而至,疫后复苏让一直宅在家的孩子们重获放飞的机会。今个暑假世纪汇联合达雅文创打造“萌力水果镇”互动乐园,将萌趣水果元素与运动融合,在趣...
2020-08-05 -
与价值贡献者同行,维谛技术(Vertiv)连
前不久,由国内精英职业发展平台猎聘网主办、北京大学市场与媒介研究中心全程指导和负责调查的2019非凡雇主活动全国巡演深圳站圆满举行,并同期揭晓了猎聘2019年深...
2019-12-17 -
2019Q1-Q3网综商业价值榜(饮料篇)
作者 | Jasmine2019年上半年,超百档网络综艺的跨物种厮杀格外激烈。但是,业内人士口中的「有优款,无爆款」确也无法反驳。偶像选秀三国杀,情感综艺喷涌而...
2019-09-19 -
杨丞琳与李荣浩领结婚证现场照曝光,曾怒斥私生
南都讯 记者麻乐9月17日,有网友主动向娱乐媒体爆料,称自己在民政厅工作的同学当天一早目睹李荣浩与杨丞琳两人在合肥领结婚证,一张截图上写到:“一出电梯和李荣浩跟...
2019-09-19