写这篇文章是因为在csdn上看到刘伟老师写的一篇抽象工厂的文章,文章链接在这里:http://
blog.csdn.net/lovelion/article/details/9319423
。
有关于工厂模式我就不重复了,刘老师那里写的很详细。
最后面有一个问题,就是抽象工厂是否符合开闭原则,在产品族和产品等级两个方面去思考,我没有查看文献,只是按照自己的理解来回答这个问题。
在产品族方面,抽象工厂是支持开闭原则的,因为增加一个产品族,本质上就是增加一个新的抽象工厂的实现类而已,但是如果要增加一个产品等级,那么就不符合开闭原则了,因为你必须在抽象工厂里面再添加一个新的方法。
以电视机和洗衣机为例,有两家工厂生产这个产品族,一家是A公司,一家是B公司,如果要增加一个产品族,再去实现一个C公司就好了。
可是如果要增加一个空调,那么抽象工厂方法就需要改变,增加一个生产空调的方法,对应着实现了抽象工厂方法的实体类也要重写增加空调的方法。
那么如何解决这个问题,我思考的是代码肯定要动,只是在哪里动而已。我想的方法是增加一个工厂管理的接口,让抽象工厂类去继承这个工厂管理的接口,增加一个新的产品等级就在工厂管理里面处理。
在工厂管理里面增加或者删除对应的产品等级,然后让工厂的实现类重写里面的方法就可以做到对产品等级的拓展。
第一次写文章,排版思路都很乱,还望理解。
版权声明:本文为qq_37447018原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。