http://blog.youkuaiyun.com/lovelion/article/details/9319571
5“开闭原则”的倾斜性
Sunny公司使用抽象工厂模式设计了界面皮肤库,该皮肤库可以较为方便地增加新的皮肤,但是现在遇到一个非常严重的问题:由于设计时考虑不全面,忘记为单选按钮(RadioButton)提供不同皮肤的风格化显示,导致无论选择哪种皮肤,单选按钮都显得那么“格格不入”。Sunny公司的设计人员决定向系统中增加单选按钮,但是发现原有系统居然不能够在符合“开闭原则”的前提下增加新的组件,原因是抽象工厂SkinFactory中根本没有提供创建单选按钮的方法,如果需要增加单选按钮,首先需要修改抽象工厂接口SkinFactory,在其中新增声明创建单选按钮的方法,然后逐个修改具体工厂类,增加相应方法以实现在不同的皮肤中创建单选按钮,此外还需要修改客户端,否则单选按钮无法应用于现有系统。
抽象工厂模式与开闭原则解析

本文探讨了在Sunny公司界面皮肤库中,由于抽象工厂模式设计时未考虑单选按钮导致的‘开闭原则’倾斜性问题。虽然抽象工厂模式支持增加产品族,但增加产品等级结构需修改所有工厂类,违反了‘开闭原则’。文章总结了抽象工厂模式的优点,如隔离产品创建、易于扩展产品族,以及主要缺点,即增加产品等级结构的不便。适用场景包括有多个产品族且需隔离产品创建细节的系统。
最低0.47元/天 解锁文章
1962

被折叠的 条评论
为什么被折叠?



