设计模式~简单工厂模式
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(){} }
简单工厂模式的优点和缺点
优点:
模式的核心是工厂类。这个类含有必要的判断逻辑,可以决定在什么时候创建哪个产品类的实例。
而客户端则可以免除直接创建产品对象的责任,而仅仅负责消费产品。
简单工厂模式通过这种做法实现了对责任的分割。
缺点:
当产品类有负责的多层等级结构时,工厂类只有它自己。以不变应万变,就是模式的缺点。
这个工厂类集中了所有产品的创建逻辑,形成一个无所不知的全能类。它需要对所有的产品负责,如果它一旦不能工作,使用到这些产品的地方就都不能工作了。
示例
以上是关于设计模式~简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章