设计模式:抽象工厂

      了解了一下设计模式中有关抽象工厂的内容。

      定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。

      只看定义不是很好理解。抽象工厂模式是指可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。在实际设计过程中,往往只是指定需要某一类产品,而对其中具体属性暂时没有明确要求,甚至会随着需求的不同进行修改,这样就不能把组件写死,不能限制到特定产品。这时定义抽象工厂类AbstractFactory,其中声明创建抽象产品对象的操作接口,随后在具体工厂类ConcreteFactory来将抽象工厂类中定义的接口进行具体实现。可以通过一些操作传递回各种抽象组件类创建的对象个体,这样用户程序可以得到具体产品而不需知道到底涉及了哪些具体类。这样保持了一种安全距离。

      根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。

      具体结构包括:

     抽象工厂类(AbstractFactory):声明创建抽象产品对象的操作接口。

     具体工厂类(ConcreteFactory):实现产生具体产品对象的操作。

     抽象产品类(AbstractProduct):声明一种产品对象的接口。

     具体产品类(ConcreteProduct):定义将被相应的具体工厂类产生的对象,并实现抽象产品类接口。

     以下为抽象工厂类图,取自:http://www.cnblogs.com/cbf4life/archive/2009/12/23/1630612.html

     

原文地址:https://www.cnblogs.com/hisbhubhu/p/5499596.html