工厂模式和简单工厂模式:简单来说,工厂模式是简单工厂模式的进化版。
就像简单工厂里面提到的,查理想吃什么类型的时候,通过旺卡来获得想吃的糖果,但是如果查理想吃苹果味的和草莓味的巧克力棒,那这个时候怎么办?让旺卡找来苹果味、草莓味的巧克力棒制作师,然后给他制作。可是要是有几百种口味嘞?旺卡怎么可能记得来了?
这就是当工厂变大,功能变多的时候,简单工厂所遇到的瓶颈:
- 简单工厂当负责太多的功能对象转换的时候,会显得很冗杂
- 像写过的“开放-封闭原则”,那么每次功能添加的时候,都需要修改这个工厂,这不是很麻烦了吗?
由于这个原因,就需要引入其他的方法:
- 将巧克力的大类型,设置为一个工厂,然后里面有多个口味的制作师,这样旺卡就只需要记住这个大类就行了,如何他找来对应工厂的管理者,然后找来对应口味的制作师就可以了。
- 此时把旺卡当做一个接口,之后添加新的巧克力大类的时候,只需要继承这个接口实现功能即可。而有新的的口味产生,就只需要在工厂继承即可。
见下图(注:对应代码会一一补上,因为vs2019终于可以用了):