OOP面向对象的七大设计原则
一. 开闭原则 OCP(Open-Closed Principle)
核心思想:对扩展开发,对修改关闭。
好处:可以提高代码的可复用性。可以提高代码的可维护性。
二.里氏代换原则 LSP(Liskov Substitution Principle)
核心思想:继承必须确保超类所拥有的性质在子类中仍然成立。在任何父类出现的地方子类都可以替换。
好处:克服了继承中重写父类造成的可复用性变差的问题。
三. 依赖倒置原则 DIP(Dependency Inversion Principle)
核心思想:要面向接口编程,不要面向实现编程。降低各个对象之间的耦合,提高系统的可维护性。
好处:降低类之间的耦合性。提高系统的稳定性。减少并行开发引起的风险。提高代码的可读性和可维护性。
四. 单一职责原则 SRP(Single Resposibility Principle)
核心思想:一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。
也就是说每个类应该只有一个职责,对外提供一种职能,而引起类变化的原因应该只有一个。
好处:降低类的复杂度。一个类只负责一项职责,其逻辑肯定要比负责多项职责简单得多。
五.接口隔离原则 ISP(Interface Insolation Principle)
核心思想:一个接口不需要提供太多的行为,一个接口应该只提供一种对外的功能,不应该把所有的操作都封装到一个接口中。
好处:提高系统的灵活性和可维护性。接口隔离提高了系统的内聚性,减少了对外交互,降低了系统的耦合性。
六.迪米特法则 LoD(Law Of Demeter or Principle of Least Knowledge)
核心思想:一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话。
好处:降低了类之间的耦合度,提高了模块的相对独立性。由于亲合度降低,从而提高了类的可复用率和系统的扩展性。
七.合成复用原则 CRP(Composite Reuse Principle)
核心思想:复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。
好处:通常类的复用分为继承复用和合成复用两种。继承复用虽然简单易实现。新旧类之间的耦合度低。复用的灵活性高。
八.总结-各种原则要求的侧重点不同:
开闭原则:对扩展开放,对修改关闭。
里氏替换原则:不要破坏继承体系。
依赖倒置原则:要面向接口编程。
单一职责原则:实现类要职责单一。
接口隔离原则:设计接口的时候要精简单一。
迪米特法则:要降低耦合度。
合成复用原则:要优先使用组合或者聚合关系复用,少用继承关系复用。
--学无止境,爱拼才会赢