[设计模式03]-抽象工厂
来源:互联网 发布:淘宝商品资质是什么 编辑:程序博客网 时间:2024/05/16 16:59
上一个章节简单工厂模式中,如果增加产品C,那么则需要修改工厂类的逻辑代码。如果这种情形发生在现实中,我们的解决方案是,增加产品C,增加生产产品C的工厂就可以了。修改工厂类的逻辑显然是不合理的。如果按照单一职责的原则,工厂应该只负责相应产品的生产,而不应该根据类别生产产品,换句话说就是工厂应该职责单一化,按照这种思路,我们针对每一种产品建立工厂。我们再在具体工厂的基础上抽象出一个类出来,这样就能够实现增加产品时,只需要增加相应的工厂,不需要改动工厂类代码。
抽象工厂在简单工程的基础上,进一步解决了扩展时需要修改工厂类逻辑代码的问题。解决方式是工厂职责明确化,再抽提工厂类。
ProductFactory
namespace SimpleFactory{ public abstract class ProductFactory { public abstract Product CreateProduct(); }}
ProductAFactory
namespace SimpleFactory{ public class ProductAFactory : ProductFactory { public override Product CreateProduct() { return new ProductA(); } }}
ProductBFactory
namespace SimpleFactory{ public class ProductBFactory : ProductFactory { public override Product CreateProduct() { return new ProductB(); } }}
调用者:
ProductFactory factory = null;factory = new ProductAFactory();factory.CreateProduct();factory = new ProductBFactory();factory.CreateProduct();Console.ReadKey();
其他代码不动,这样如果增加产品,我们只需要增加相应工厂,
这个已经能够满足SOLID原则的单一职责原则和对扩展开放,对修改封闭的原则。
ProductA
public class ProductA:Product{ public ProductA() { Console.WriteLine("ProductA created."); }}
ProductB类似
抽象工厂模式将逻辑划分为产品层, 工厂层,抽象工厂层。这里我们得出一条结论:
if...else.switch这样的分支判断都是可以通过设计模式来分解的。
0 0
- [设计模式03]-抽象工厂
- 设计模式03:抽象工厂
- 设计模式-03-抽象工厂模式
- 设计模式03_抽象工厂模式
- 抽象工厂设计模式
- 设计模式-----抽象工厂
- 抽象工厂设计模式
- 抽象工厂设计模式
- 抽象工厂设计模式
- 设计模式 抽象工厂
- 设计模式--抽象工厂
- 设计模式--抽象工厂
- 设计模式 抽象工厂
- 设计模式-抽象工厂
- 设计模式-> 抽象工厂
- 抽象工厂设计模式
- 设计模式--抽象工厂
- 【设计模式】抽象工厂
- Leetcode Plus One
- 关于_int64的范围以及输出格式
- 飞腾工作室
- Java中的Map、Set、List及其实现
- undefined reference to “boost” in Qt—Ubuntu
- [设计模式03]-抽象工厂
- proguard-android.txt does not exist or is not regular file
- Centos 利用sqoop从sqlserver导入数据到HDFS或Hive
- iphone6的SAR值以及手机辐射知识
- 解密BadUSB
- 整合Lucene 4.10.1 与IK Analyzer
- Java语言的特点
- static_cast, dynamic_cast, const_cast探讨
- IO流总结