Java常用设计模式之简单工厂模式

1,511 阅读2分钟

什么是简单工厂模式

简单工厂模式是类创建型模式。由一个工厂对象决定创建出哪一种产品类的实例,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。

简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式

简单工厂模式的层次结构

  • 工厂角色:简单工厂模式的核心对象,如下面的TechFactory类
  • 抽象角色:抽象角色是具体角色的父类(这里抽象类也可以),用来描述具体角色公有的函数,如下面的Tech
  • 具体角色:工厂根据客户端各具体角色对应的参数输入,来返回出对应的具体角色,如下面的PHP与Java
    简单工厂模式层次结构

简单工厂模式的优缺点

优点

工厂类包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖

缺点

在进行具体对象的增加的同时,虽然扩展了,但也修改了工厂类的业务逻辑,这违背了开放-封闭原则

实例

抽象角色:

抽象角色

具体角色:
具体角色
工厂角色:
工厂角色
客户端:
客户端

从实例中,我们再看简单工厂模式的优缺点

  • 优点:比如我们要再添加一个C++类,除了新建一个具体类外,还要在工厂类的逻辑中添加一个case,而客户端只要进行参数的修改就可以了,让客户端只要知道接口以及所需要的参数
  • 缺点:显而易见,要进行switch case的修改,这样违背了开放-封闭原则

如果有什么疑问或者错误,欢迎指出或者讨论,谢谢

参考资料: