开闭原则,就是对扩展开放,对修改关闭,是SOLID最重要的一条原则,大部分的设计模式都是为了实现开闭原则
如何写出符合开闭原则的代码
- 时刻具备扩展意识、抽象意识、封装意识
- 开发设计的时候,需要提前设计,并预留扩展点,但是也不能陷入过度设计
- 利用多态、依赖注入、基于接口而非实现编程
- 尽量复用标准设计模式,以及对应的命名规范,方便其他人快速掌握
- 识别出代码可变部分和不可变部分之后,将可变部分封装起来,隔离变化,提供抽象化的不可变接口,给上层系统使用。如果需求变更,只需要扩展一个新的实现即可
如果判断代码是否符合开闭原则
- 新的功能没有破坏原有代码的正常运行,没有破坏原有的单元测试
其他注意事项
- 有些情况下,代码的扩展性会跟可读性相冲突,所以也不能一味地追求极致的扩展性,可读性也是非常重要的
参考
- 设计模式之美: 如何做到“对扩展开放、修改关闭”?扩展和修改各指什么?