抽象工厂对产品等级的拓展(求大神指点)

来源:互联网 发布:淘宝客服对话 编辑:程序博客网 时间:2024/05/16 09:39

写这篇文章是因为在csdn上看到刘伟老师写的一篇抽象工厂的文章,文章链接在这里:http://blog.csdn.net/lovelion/article/details/9319423。

有关于工厂模式我就不重复了,刘老师那里写的很详细。

最后面有一个问题,就是抽象工厂是否符合开闭原则,在产品族和产品等级两个方面去思考,我没有查看文献,只是按照自己的理解来回答这个问题。

在产品族方面,抽象工厂是支持开闭原则的,因为增加一个产品族,本质上就是增加一个新的抽象工厂的实现类而已,但是如果要增加一个产品等级,那么就不符合开闭原则了,因为你必须在抽象工厂里面再添加一个新的方法。

以电视机和洗衣机为例,有两家工厂生产这个产品族,一家是A公司,一家是B公司,如果要增加一个产品族,再去实现一个C公司就好了。

可是如果要增加一个空调,那么抽象工厂方法就需要改变,增加一个生产空调的方法,对应着实现了抽象工厂方法的实体类也要重写增加空调的方法。

那么如何解决这个问题,我思考的是代码肯定要动,只是在哪里动而已。我想的方法是增加一个工厂管理的接口,让抽象工厂类去继承这个工厂管理的接口,增加一个新的产品等级就在工厂管理里面处理。



在工厂管理里面增加或者删除对应的产品等级,然后让工厂的实现类重写里面的方法就可以做到对产品等级的拓展。

第一次写文章,排版思路都很乱,还望理解。

0 0
原创粉丝点击