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

    xiaoxiao2021-03-25  77

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

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

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

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

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

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

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

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

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

    转载请注明原文地址: https://ju.6miu.com/read-32966.html

    最新回复(0)