开闭原则的困惑?
我明白开闭原则的意思,而且知道修改一个已经测试好的代码,会引出bug,所以这里用开闭原则,扩充一个方法,而不是修改一个放法,我的问题是为一个方法创建一个类,是不是有点奢侈?
下面是一个需求的例子,大家看看改如何做?
有个页面用于显示最近发生的所有事件(什么开门事件,打电话事件啊等),
第一次:客户说想通过时间过滤掉一些事件方便查看
第二次:客户说想通过事件类型(比如发生事件是保安系统、公寓系统,还是大门系统,一个字段记录三种类型)滤掉一些事件方便查看
第三次:客户说想要给过滤出的事件进行分页
第四次:客户说想要对结果进行排序,例如按时间排序、按事件类型排序、按描述排序
问题是
1.我已经做的前三次的,发现我的方法接受的参数越来越多,而且有可能客户还会有新需求,我还要加参数
2.是不是最好不修改第三次的代码?修改那个我怕引出bug,但修改第三次的代码最简单
3.我也想过用装饰模式,但发现满足不了需求,因为如果先分页,在对所有条件过滤,那数据就不正确了
[解决办法]
嗯,挺好的,^_^。要是有多种查询(事件、消息、记录等等),这个就会更有意义一些,Condition接口有不同的实现对应不同的查询条件来生成SQL,呵呵。
现在的确思考设计原则的人不多了,希望以后多多交流,呵呵