2. 工厂设计模式
来源:互联网 发布:淘宝网天猫全棉女卫衣 编辑:程序博客网 时间:2024/05/16 01:39
为什么产生了工厂设计模式
当有一组逻辑上相关联的对象 , 且每个对象拥有大量属性时 , 不应用new的方法构造对象 , 这会造成客户端调用代码的复杂性 , 用工厂类创建对象 , 来屏蔽构建对象时对多个属性赋初值的操作
1. 工厂模式
(1) 工厂模式用于创建一组业务上相关的对象, 这些对象之间有一个显著的区别, 用工厂类根据这一个区别 , 来产生不同的对象
(2) 把这些业务上相关的一组对象抽象出一个接口 , 使得产生的对象解耦
(3) 把工厂类抽象出接口, 让产生对象的方法解耦
eg : Product : 白人 , 黑人 ; 这两种人只有肤色这个显著区别, 于是让工厂通过肤色的不同 , 产生不同的人种
2. 简单工厂 (唯一的工厂类, 创建对象的方法是静态方法)
当去除AbstractHumanFactory , 让HumanFacctoty成为唯一的顶层工厂类 , createHuman()变成static方法 , 则则这个工厂就变成了简单工厂
3. 多个工厂类的工厂模式
相比于工厂模式 , 当工厂接口下有多个工厂实现类 , 每个工厂实现类负责实例化一个对象的时 (有多个平行于HumanFacctory的工厂类) , 就成为
了多个工厂的工厂模式
4. 抽象工厂
(1) 一组相关联的对象中 , 有两种层次的业务区别
(2) 用工厂类实例化对象时 , 把一种业务区作为工厂实现类的分类, 另一种作为工厂接口方法的分类
eg :
|
男人| . . 男女 , 黑白肤色是两组业务区别,
| 黑白 : createWhite(), createBlack()
女人| . . 男女 : ManFactory, WomanFactory类
|_____________________
黑色 白色
a) 开始的黑人,白人不再满足业务需求 , 对象分成了白男,白女, 黑男,黑女 , 于是白人, 黑人成为了抽象类实现Human接口, 4种人种成为了真正的业务对象
b) 由于业务对象出现了两种层级的区别, 因此, 用工厂接口的不同创建对象方法区分对象大层级区别 , 用工厂实现类区分对象小层级差别
抽象工厂的设计, 实现了当构建对象的客户端代码的面向接口编程
public class Test {
public static void main(){
// HumanFactory接口,AbstractMan,AbstractWoMan抽象类
HumanFactory manFactory = new ManFactory();
HumanFactory womanFactory = new WomanFactory();
AbstractMan wm = manFactory.createWhite();
AbstractWoMan bm = womanFactory.createBlack();
}
}
0 0
- 2. 工厂设计模式
- 2.工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)(设计模式笔记)
- 深入设计模式-2.工厂方法模式
- 《设计模式》 - 2. 工厂模式( Factory )
- 设计模式------2.简单工厂模式
- 设计模式--工厂设计
- 设计模式------工厂模式
- 设计模式------工厂模式
- 设计模式 [ 工厂模式 ]
- 设计模式--工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式 工厂模式
- 设计模式-工厂模式
- 设计模式 -- 工厂模式
- 设计模式-工厂模式
- 设计模式----工厂模式
- 设计模式---工厂模式
- 开源HYBUnicodeReadable日志显示Unicode中文
- Windows7安装Maven3.3.9
- 简单理解Socket
- 关于支付平台的接口参数
- Nginx + CGI/FastCGI + C/Cpp
- 2. 工厂设计模式
- iOS图片上传
- 详解键值观察(KVO)及其实现机理
- apache httpd与tomcat集群搭建
- java JVM设置
- Gson详解
- 如何将Android Studio的工程导入到eclipse中
- nagios nrpe监控Linux
- http访问url的问题