C#设计模式之三个工厂总结

2019-05-08  本文已影响0人  Memoyu
文章参考来源:https://www.cnblogs.com/qiaoconglovelife/p/5750290.html
感谢:CoderCong

认知尚浅,如有错误,愿闻其详!

对三个工厂的认知

  从模式简单工厂、工厂方法、抽象工厂,看出它们关键词在于工厂,本质就是使用工厂去生产产品。在学习前两个时,可以分出存在的区别,后来到工厂方法和抽象工厂,发觉它们就是一样的。发觉不出它们的区别,他们的区别就是工厂方法时只有一个接口方法,而抽象工厂则是存在多个接口方法。后来查阅资料弄明白,归根结底本质上工厂方法是抽象工厂的一种极端情况(即只生产一种产品)。它们三个的关系在于简单工厂在于解决对类的创建进行封装,但是存在工厂方法逻辑复杂的问题,而工厂方法是为了解决他存在的问题,但是存在着处理产品族问题比较复杂的问题,而抽象工厂则是针对产品族问题而来的。

区别

简单工厂 : 用来生产同一等级结构中的任意产品。(拓展增加产品都会造成工厂方法的逻辑复杂,难以维护)

工厂方法 :用来生产同一等级结构中的固定产品。(很容易去拓展产品,但是每个产品都会有个独立的工厂类)

抽象工厂 :用来生产不同产品族的全部产品。(拓展需要更改接口类,从而造成所有继承接口的类方法错误,所以不支持拓展,但是增加产品族确实很容易)

注意事项

(1)创建工厂类常常采用单例模式(Singleton)。

(2)工厂类拥有基类(定义共同接口),基类可以为纯虚类,也可以定义缺省方法。

(3)对于工厂方法和抽象工厂,基类中的生产产品的函数常常为虚函数,以实现动态绑定。

(4)调用工厂方法的函数通常采用工厂实现的指针和引用作为形参,以便根据不同的工厂实参调用不同的工厂方法。

具体三个工厂方法具体参照上三篇文章

上一篇 下一篇

猜你喜欢

热点阅读