面向对象的设计原则

开闭原则(The Open-Closed Principle ,OCP)


软件实体(模块,类,方法等)应该对扩展开放,对修改关闭。

系统设计需要遵循开闭原则的原因


    1. 稳定性。开闭原则要求扩展功能不修改原来的代码,这可以让软件系统在变化中保持稳定。
    2. 扩展性。开闭原则要求对扩展开放,通过扩展提供新的或改变原有的功能,让软件系统具有灵活的可扩展性。
        遵循开闭原则的系统设计,可以让软件系统可复用,并且易于维护。

 

 里氏替换原则(Liskov Substitution Principle ,LSP)


所有引用基类的地方必须能透明地使用其派生类的对象。

只有满足以下2个条件的OO设计才可被认为是满足了LSP原则:

  • 不应该在代码中出现if/else之类对派生类类型进行判断的条件。

  • 派生类应当可以替换基类并出现在基类能够出现的任何地方,或者说如果我们把代码中使用基类的地方用它的派生类所代替,代码还能正常工作。

里式替换原则的引申意义:子类可以扩展父类的功能,但不能改变父类原有的功能。

迪米特原则(最少知道原则)(Law of Demeter ,LoD)
迪米特原则(Law of Demeter)又叫最少知道原则(Least Knowledge Principle),可以简单说成:talk only to your immediate friends,只与你直接的朋友们通信,不要跟“陌生人”说话。

单一职责原则


永远不要让一个类存在多个改变的理由。

换句话说,如果一个类需要改变,改变它的理由永远只有一个。如果存在多个改变它的理由,就需要重新设计该类。

单一职责原则原则的核心含意是:只能让一个类/接口/方法有且仅有一个职责。

 接口分隔原则(Interface Segregation Principle ,ISP)


不能强迫用户去依赖那些他们不使用的接口。

依赖倒置原则(Dependency Inversion Principle ,DIP)


A. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象
B. 抽象不应该依赖于细节,细节应该依赖于抽象 C.针对接口编程,不要针对实现编程。

组合/聚合复用原则(Composite/Aggregate Reuse Principle ,CARP)


尽量使用组合/聚合,不要使用类继承。

 

posted @ 2022-09-05 17:53  末少  阅读(41)  评论(0)    收藏  举报