工厂模式
工厂顾名思义就是生产、创建产品,是一种创建型模式,能够利用该模式减少if..else语句块的使用,工厂模式分为三种:
-
简单工厂模式
-
工厂方法模式
-
抽象工厂模式
简单工厂模式
UML
简单工厂模式仅仅做了一层简单的封装,通过工厂的参数传递来指定要创建的“产品”
代码分析
在简单工厂模式中,每增加一个新产品,需要在Factory类中新增一个分支代码,故违反了开闭原则,因此引出了工厂方法模式
工厂方法模式
UML
一种产品对应一个工厂,每个工厂生产特定的一个产品,符合开闭原则
代码分析
抽象工厂模式
Graphic Design Patterns:在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。
为了更清晰地理解抽象工厂方法模式,需要先引入两个概念:
产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是手机,其子类有小米手机、华为手机、苹果手机,则抽象手机与具体品牌的手机之间构成了一个产品等级结构,抽象手机是父类,而具体品牌的手机是其子类。
产品族 :在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如小米工厂生产的小米手机、小米手表,小米手机位于手机产品等级结构中,小米手表位于手表产品等级结构中。
UML
代码分析