什么是简单工厂模式
简单工厂模式是类创建型模式。由一个工厂对象决定创建出哪一种产品类的实例,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。
简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式
简单工厂模式的层次结构
- 工厂角色:简单工厂模式的核心对象,如下面的TechFactory类
- 抽象角色:抽象角色是具体角色的父类(这里抽象类也可以),用来描述具体角色公有的函数,如下面的Tech
- 具体角色:工厂根据客户端各具体角色对应的参数输入,来返回出对应的具体角色,如下面的PHP与Java

简单工厂模式的优缺点
优点
工厂类包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖
缺点
在进行具体对象的增加的同时,虽然扩展了,但也修改了工厂类的业务逻辑,这违背了开放-封闭原则
实例
抽象角色:

具体角色:



从实例中,我们再看简单工厂模式的优缺点
- 优点:比如我们要再添加一个C++类,除了新建一个具体类外,还要在工厂类的逻辑中添加一个case,而客户端只要进行参数的修改就可以了,让客户端只要知道接口以及所需要的参数
- 缺点:显而易见,要进行switch case的修改,这样违背了开放-封闭原则
如果有什么疑问或者错误,欢迎指出或者讨论,谢谢
参考资料:
- 《大话设计模式》
- 工厂三兄弟之简单工厂模式(二)-极客学院