几种工厂模式的区别

来源:互联网 发布:python编程求圆的面积 编辑:程序博客网 时间:2024/05/18 09:33

本文主要根据网络资料整理,主要参考:设计模式导学目录


工厂模式主要包括简单工厂模式、工厂方法模式、抽象工厂模式。看完三种模式的介绍,也许你和我一样并不能完整的说出它们的区别,感觉好像有点类似又有点区别。查阅了网络上的一些解读(例如知乎问答抽象工厂模式和工厂模式的区别),个人觉得可能主要区别是:


简单工厂模式:定义一个工厂类,根据参数的不同返回不同类的实例,被创建的实例通常有共同的父类。从中可以看出,改模式的重要特点是有参数,并且根据参数来决定创建什么样的具体实例。(参考)


工厂方法模式:定义一个创建一个对象的工厂接口,然后让每一个子类工厂创建一个自己的实例类。(参考)鼠标工厂父类有生产鼠标这个接口,戴尔鼠标工厂生产戴尔鼠标,联想鼠标工厂生产联想鼠标。所以是一个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类。


抽象工厂模式:定义一个创建一系列相关或者相互依赖对象的工厂接口,然后每个子类工厂创建自己的一系列实例类。(参考)但是知乎链接里的解释更形象,比如有一个生产键盘和鼠标的工厂接口,然后戴尔工厂类生产戴尔牌键盘和鼠标,联想工厂类生产联想牌键盘和鼠标。所以是多个抽象产品类,每个抽象产品类派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类。