工厂顾名思义就是创建产品,工厂分为三种:简单工厂,工厂方法,抽象工厂。该模式用于封装和管理对象的创建,是一种创建型模式。
1)简单工厂
该模式通过向工厂传递类型来指定要创建的对象
-
提供一个方法,根据类型创建
-
为每一种类型分别提供一个方法
简单工厂的优缺点: -
优点:能够决定创建哪个具体类的对象,明确区分各自的职责和权力,有利于整个软件体系结构的优化。
-
缺点:容易违反高内聚低耦合的开闭原则。
2)工厂方法
简单工厂模式中所有类型共用一个工厂,违反了开闭原则。工厂方法是为每个类型分配一个工厂,当新增一个类型,便新增一个工厂。
3)抽象工厂
上面两种模式不管工厂怎么拆分抽象,都只是针对一类产品AbstractProduct,当需要生成另外一类产品AbstractProductB,需要用到抽象工厂。抽象工厂模式通过在AbstarctFactory中增加创建产品的接口,并在具体子工厂中实现新加产品的创建,当然前提是子工厂支持生产该产品。否则继承的这个接口可以什么也不干。