设计模式~简单工厂模式

Posted vincent-yuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式~简单工厂模式相关的知识,希望对你有一定的参考价值。

简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

工厂模式专门负责将大量有共同接口的类实例化。

工厂模式的几种形态

  • 简单工厂模式(Simple Factory):又称静态工厂方法模式
  • 工厂方法模式(Factory Method):又称多态性工厂模式或虚拟构造子模式
  • 抽象工厂模式(Abstract Factory): 又称工具箱模式

 简单工厂模式的结构

技术图片

 从上图可以看出,简单工厂模式涉及到工厂角色、抽象产品角色以及具体产品角色等三个角色:

  • 工厂类角色(Creator): 担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的java类实现。
  • 抽象产品角色(Product): 担任这个角色的类是由工厂方法模式所创建的对象的父类,或他们共同拥有的接口。抽象产品角色可以用一个java接口或者java抽象类实现。
  • 具体产品角色(Concrete Product): 工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体java类实现。

工厂类的示意性源代码:

Creator类的源代码:

public class Creator {

    public static Product factory(){
        return new ConcreteProduct();
    }
}

抽象角色Product接口的源代码:

public interface Product {

}

具体角色ConcreteProduct类的源代码:

public class ConcreteProduct implements Product {

    public ConcreteProduct(){}
}

简单工厂模式的优点和缺点

 优点:

模式的核心是工厂类。这个类含有必要的判断逻辑,可以决定在什么时候创建哪个产品类的实例。

而客户端则可以免除直接创建产品对象的责任,而仅仅负责消费产品。

简单工厂模式通过这种做法实现了对责任的分割。

缺点:

当产品类有负责的多层等级结构时,工厂类只有它自己。以不变应万变,就是模式的缺点。

这个工厂类集中了所有产品的创建逻辑,形成一个无所不知的全能类。它需要对所有的产品负责,如果它一旦不能工作,使用到这些产品的地方就都不能工作了。

 

 

 

 

 

示例

 

以上是关于设计模式~简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式学习——简单工厂模式工厂模式抽象工厂模式

设计模式之简单工厂模式

设计模式-简单工厂工厂方法模式抽象工厂模式详解

Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---工厂模式之简单工厂

C#之三十八 简单工厂设计模式

设计模式之简单工厂模式