【Java设计模式】工厂模式

工厂模式

在 Template Method 模式中,我们在父类中规定处理的流程框架,在子类中实现具体的处理。如果我们将该模式用于生产实例,就是 Factory Method 模式

Factory Method 模式中的登场角色

  • Product(产品): Product 角色属于框架,是一个抽象类。定义了在 Factory Mehod 模式中生成的实例所持有的接口( API )但具体的处理由子类 ConcreteProduct 来决定。

  • Creator(创建者): Creator 角色属于框架,负责是生成 Product 角色的抽象类,但具体的处理由 ConcreteCreator 角色来决定。

    Creator 角色对于实际负责生成实例的 ConcreteCreator 角色一无所知,只需要知道要调用 Product 角色和生成实例的方法( factoryMehod 方法 ),就可以生成实例。

    不使用 new 关键字来生成实例,而是调用生成实例的专用方法来生成实例,这样可以以防止父类与其他具体类耦合。

  • ConcreteProduct(具体的产品): ConcreteProduct 角色属于具体加工,决定了具体的产品。

  • ConcreteCreator(具体的创建者): ConcreteCreator 角色属于具体加工,负责生成具体的产品。

  • 示例代码

【Java设计模式】工厂模式_第1张图片

拓展

框架与具体加工

我们可以使用相同的“框架”创建出其他的“产品”和“工厂”,我们无需修改框架中的任何内容。

生成实例 — 方法的三种实现方式

  1. 指定其为抽象方法: 当指定其为抽象方法后,子类必须实现该方法。

  2. 为其实现默认处理: 实现默认处理后,如果没有实现该方法就会进行默认处理。

  3. 在其中抛出异常: 将方法的默认处理设置为抛出异常,这样若未实现就会在运行时报错,告知未实现方法。

相关的设计模式

  • Template Method 模式 :Factory Method 模式是 Template Method 模式的应用。

  • Singleton 模式 :多数情况下可以使用 Singleton 模式扮演 Creator 角色。

  • Composite 模式 :有时可以将 Composite 模式用于 Product 角色。

  • Iterator 模式 :Iterator 模式中使用 iterator 方法生成 Iterator 实例时会使用 Factory Method 模式。

你可能感兴趣的:(Java设计模式,java,设计模式,开发语言)