简单工厂模式(Simple Factory)
类图
简单工厂模式的一般结构,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/5c8664f2369d4f24e41c49c81a793259.png)
角色
工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
实例
下面基于上述基本的简单工厂模式,观察产品结构变化,大致可以得到如下的情况:
第一种:
![](https://i-blog.csdnimg.cn/blog_migrate/2eabc9064f9cc7867d2daee16338bab6.png)
第二种:
![](https://i-blog.csdnimg.cn/blog_migrate/e83133823ceb1dc2c32291240439b4a0.png)
第三种:
![](https://i-blog.csdnimg.cn/blog_migrate/23ded84b43687b687c0d592ee5033d26.png)
缺点
当再增加一个产品类时,都要在工厂类中增加相应的商业逻辑和判断逻辑,这显然是违背开闭原则的。