所谓开闭原则,Open-Closed Principle 讲的是一个软件实体应当对扩展开放,对修改关闭。满足开闭原则的系统具有两个无可比拟的优越性:
通过扩展已有系统,可以提供新的行为,以满足新的需求,这使得变化中的软件系统具有一定的适应性和灵活性。
已有的软件模块,特别是重要的抽象层模块不能修改,这使得变化中的软件具有一定的稳定性和延续性。
怎样做到开闭原则?
抽象化是关键。做到“开闭原则“不是一件简单的事情,但有很多规律可循。这些规律有同样以设计原则的身份出现,但它们都是”开闭“原则的手段和工具。
里氏代换原则。任何基类可以出现的地方,子类一定可以出现。是开闭原则的补充。基类与子类的继承关系就是抽象化得具体体现,所以里氏代换原则是实现抽象化具体步骤的规范。
依赖倒转原则。要依赖于抽象,不要依赖于实现。要想实现开闭原则,就要坚持依赖倒转。
聚合复用原则。尽量使用聚合,而不是继承关系达到复用。
迪米特法则。一个软件实体应当尽可能少的与其他实体发生相互作用。
接口隔离原则。应当为客户端提供尽量小的单独接口,而不是提供大的总接口。显然,迪米特法则和接口隔离原则,会使软件系统在功能扩展时,不会将修改的压力传递到其他的对象上。