开闭原则(The Open-Closed Principle ,OCP)
软件实体(模块,类,方法等)应该对扩展开放,对修改关闭。
系统设计需要遵循开闭原则的原因
- 稳定性。开闭原则要求扩展功能不修改原来的代码,这可以让软件系统在变化中保持稳定。
- 扩展性。开闭原则要求对扩展开放,通过扩展提供新的或改变原有的功能,让软件系统具有灵活的可扩展性。
遵循开闭原则的系统设计,可以让软件系统可复用,并且易于维护。
里氏替换原则(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)
尽量使用组合/聚合,不要使用类继承。
标签:原则,基类,接口,开闭,面向对象,Principle,派生类,设计 From: https://www.cnblogs.com/diandianzai/p/16659047.html