简单工厂
什么是工厂?
集中产生产品、对外提供生产的产品的地方就是工厂。
1、产品接口
![](https://img.haomeiwen.com/i15253776/2a330456b4c97f05.png)
2、产品1类
![](https://img.haomeiwen.com/i15253776/f776a4a75c611696.png)
3、产品2类
![](https://img.haomeiwen.com/i15253776/99f636bd3c44c14e.png)
4、简单工厂
![](https://img.haomeiwen.com/i15253776/1b64d5727e4fc475.png)
为什么要用这种模式
Human hm = HumanFactory.getHumanInstance(HumanType.MAN);
1、对于客户端来说,我们需要某个对象只是想使用它,我们无需来创建它。
2、将创建对象的方式集中管理,易于维护。
3、解耦。将使用对象跟创建对象分开,如果创建对象的逻辑有变动,不会影响到使用对象的逻辑。
4、获取对象的方式可以更形象、具体。
缺点描述
如果增加产品类,需要改动获取产品实例的方法逻辑,需要增加相应的判断逻辑跟实例化逻辑。工厂方法还是需要改动。
秉承开闭原则——对增加开放,对修改关闭
改进工厂
工厂接口
![](https://img.haomeiwen.com/i15253776/421a5d9f2992f1fd.png)
改进后的工厂
![](https://img.haomeiwen.com/i15253776/131dcb4a30749761.png)
测试
![](https://img.haomeiwen.com/i15253776/52db72bc4a6b001d.png)
![](https://img.haomeiwen.com/i15253776/bbac83a5e4a83599.png)
如此,就可以在增加新产品类型时,就只需要增加枚举实例,不需要改动工厂方法里的逻辑。
网友评论