3中工厂模式的比较
比较对象:简单工厂模式
工厂方法模式
抽象工厂模式
概念解释:
简单工厂模式: 简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
工厂方法模式:工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。
抽象工厂模式:抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。
3种工厂模式之间的比较:
另外,由于简单工厂模式使用静态方法创建,这就导致静态方法无法被继承(All Languages)。
所以,简单工厂模式适用于创建的对象比较少或简单的情况。
但是工厂方法模式无法体现产品之间的关系,如果有两个不同的产品需要创建,就需要两个不同的工厂类,即使这两个产品有某钟必要的联系,也还是需要两个不同的工厂类。
在抽象工厂模式中,一个具体的工厂类负责创建一系列相互关联的产品,当一系列相互关联的产品被设计到一个工厂类里后,客户端的调用变得非常简单;如果要更换这一系列的产品,只需要更换一个工厂类即可,但零件之间的组装如果放到客户端,则客户端变得非常臃肿,如果把零件之间的组装放在工厂类里,则又违反了工厂类单一职责的原则,使得工厂类既要负责对象的创建,又要负责产品的组装。