开放封闭原则

一个实体应该可以扩展,但是不可以修改

无论模块多么的封闭都会存在一些无法应对的变化。既然不能完全的将功能封闭,那么我们在设计的时候就应该去猜测最有可能发生变化的种类,然后抽象这些变化进行隔离。

比如在设计一个计算器程序时我们将加减乘除都写在一个类里,如果我们需要增加开方运算等,我们就需要修改这一个大类。如果我们通过继承、多态来隔离具体大计算方式,我们就不需要去修改原来的计算类,只需要增加一个继承计算父类,然后根据业务去实现这个类的逻辑即可。

Note

面对需求,对程序的改动应该是通过增加新的代码,而不是去修改现有代码

不可能在实践中完全遵守这一原则,我们应该根据业务需求与现实情况去设计软件。拒绝不成熟的抽象和抽象本身一样重要。