1.定义
设计良好的类或者模块应该对扩展开发,对修改关闭。
添加一个新的功能应该是,在已有代码基础上扩展代码(新增模块、类、方法等),而非修改已有代码(修改模块、类、方法等)。
2.分析
为什么要使用开闭原则?
使用开闭原则能够限制对现有代码的修改,这会降低引入新的BUG的风险,其实我们在对原有代码修正Bug时也会引入更多BUG,所以,如果原有代码的Bug不是很致命,或者可以通过拓展增加代码来避免,那么尽量不要破坏封装。
不使用开闭原则的弊端?
对一个程序的单一的改变导致依赖模块的级联式改变。(一发动全身)
3.实例
一个例子,用手开门和关门。
如果有新的需求,需要增加手开抽屉和关抽屉的功能。对于代码方面,需要增加一个Drawer类,同时修改Hand类。
遵循OCP开闭原则的例子,手开门和关门依赖于一个接口,具体的实现类实现这个接口。
当需要增加手开冰箱和关冰箱时,冰箱类实现这个接口,不需要修改原有Hand类和接口。