工厂方法模式

Simple Factory模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。
优点:工厂类中包含了必要的逻辑判断,去除了客户端与具体产品的依赖。
缺点:在某种程度上违背了开放一封闭原则。对工厂类过于依赖。
工厂方法(Factory Method)模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。
在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。
在Factory Method模式中,工厂类与产品类往往具有平行的等级结构,它们之间一一对应。
抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。
具体工厂(Concrete Creator)角色:实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑。
抽象产品(Product)角色:产品对象的共同父类或共同拥有的接口。
具体产品(Concrete Product)角色:实现了抽象产品角色所定义的接口。
工厂方法模式与简单工厂模式
工厂方法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。
工厂方法模式有一个别名叫多态性工厂模式
优点:较好的符合了“开放一封闭”原则。
缺点:工厂方法是要创建产品对象的,也就是需要选择具体的产品对象,并创建他们的实例。因此具体产品对象与工厂方法是耦合的。
何时选用工厂方法模式

  • 如果一个类需要创建某个接口的对象,但是又不知道具体的实现,这种情况可以选用工厂方法模式。
  • 如果一个类本身就希望由他的子类来创建所需的对象的时候,应该使用工厂方法模式。

工厂方法模式很好的体现了“依赖倒置原则”。
本质延迟到子类来选择实现

你可能感兴趣的:(设计模式笔记,设计模式)