创建型设计模式对比总结 设计模式(八)

 创建型模式是new 的一种替代方式,可以将对象的创建与具体的类型进行分离

目前已经介绍了5种创建型设计模式(如果简单工厂算一种的话,那就是6种)
分别是:
简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式

简单工厂模式


静态工厂方法是一种最简单的创建的替代方法
基本上不涉及复杂的处理过程,可能执行的仅仅是包装、转换等 
 
比如,一个静态方法,根据参数进行if else判断,或者switch选择进而确定需要创建的对象类型 
比如,Long内部的valueOf 接受不同类型的参数,进而转换为Long类型对象
他可以是一个方法,也可以有多个静态方法
尽管通常简单工厂模式将只会创建一种类型的产品对象
但是,你也可以N个静态方法,创建N多种不同类型的对象
不过一般不这么用,不够清晰,没有条理杂乱,完全不符合单一职责原则
所以对于简单工厂模式,我们一般说简单工厂模式只能创建一种类型的产品
 
简单工厂模式它的核心就是:
一个类  静态方法    来解决对象的创建问题
一个类吃遍天下

工厂方法模式


简单工厂模式一个类吃遍天下,职责过多,就会有各种原因可能要修改这个类,好比你是两个班级的班主任,不管哪个班级的学生有事情都要找你。
既不符合单一职责原则,也不符合开闭原则
所以为了解决这个问题,进化出来工厂方法模式
 
工厂方法模式不再是一个类吃遍天下
工厂方法模式通过与产品等级结构相同的工厂等级结构,对产品进行创建 
每个工厂不再是多个职责,仅仅创建一种类型的产品,符合单一职责
而且,对于新增的产品等级,只需要扩展工厂,而不需要修改现有的工厂
所以说工厂方法模式是简单工厂模式的标准版本,规范版本
工厂方法定义了一个用于创建对象的接口,他的子类(具体的工厂类)负责具体产品的创建
这个抽象的工厂角色并不知道他所创建的对象的具体类型,因为是子类决定了具体类型
将创建对象的职责委托给了多个子类中的一个,所以也说工厂方法模式将对象的创建延迟到其子类
比如
Creator creator = new ConcreteCreator();
Product product= creator.create();
客户端通过creator.create()获得产品
不用关心Creator具体的类型,也不知道Product具体的类型,都是面向抽象的编程
创建的产品的具体的类型完全是动态的根据creator的具体的类型ConcreteCreator决定的
所以工厂方法模式也叫做多态工厂模式

抽象工厂模式

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信