简单工厂-工厂模式-抽象工厂类图演进
2019-07-24 18:07:25 1 举报
简单工厂模式/工厂方法模式/抽象工厂模式类图渐进
作者其他创作
大纲/内容
Product2
+type:String
屏蔽掉客户端对细节的依赖、可见
ConcreteProductB2
Factory1
+productA:ProductA+productB:ProductB
+createProductA():ProductA+createProductB():ProductB
v1: 客户端需要清楚创建所依赖的对象,业务耦合在客户端
Product
client
+ factory:Creator
-createProduct(params):Product
ConcreteProductB1
Product product;if(type == x){product = new Product1();}else if(type == y){product = new Product2();}
Product factoryMethod(params){if(type == x){product = new Product1()}else if (type == y){product = new Product2();}....return product;}
Factory2
Creator1
+product1:Product
+factoryMethod():Product
create
Product3
Product1
+type:String
AbstractFactory
抽象工厂模式产品簇复杂度增大后的工厂方法加强版【多工厂、多产品】
+ product1:Product+ product2:Product+ product3:Product
1.减少客户端对业务对象的依赖2.将创建对象可变逻辑进行封装
违反OOP设计开闭原则:客户端需要根据业务频繁修改
ProductA
需求:新产品类型z
ProductB
Product product;if(type == x){product = new Product1();}else if(type == y){product = new Product2();}else if(type == z){product = new Product3();}
+ product1:Product+ product2:Product
Creator
+product:Product
+factoryMethod(params):Product
Product createProduct(params){product = Creator.factoryMethod(params);return product;}
解耦
简单工厂模式(静态工厂方法模式)
工厂方法模式创建对象实现延迟到子类(抽象方法)【多工厂、单一产品】
好处:当Product再次变动的时候,只是需要新增一个类和对应类对象创建工厂客户端并不需要频繁修改
ConcreteProductA1
ConcreteProductA2
收藏
0 条评论
下一页