描述:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。
其实含义是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化,那什么是软件实体呢?
项目或软件产品按一定的逻辑规则划分的模块。
抽象和类。
方法。
’
当需求变化的时候,有的书籍需要打折,那么如个解决这个需求呢?
1 修改接口
在IBook上新增一个方法getOffprice()方法,专门用于处理打折的 但是这样修改的结果就是实现类也要修改 IBook作为接口应该是稳定且可靠的,不应该经常变化,
2 修改实现类
直接在getprice()方法中实现打折处理。
3 通过扩展实现变化(可选)
增加一个子类,复写getPrice()方法,
注意 开闭原则对扩展开放,对修改关闭,并不意味者不做任何修改,底层模块的变更,必然要有高层模块进行耦合。
网友评论