三、里氏替换原则
里氏代换原则由2008年图灵奖得主、美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出。其严格表述如下:如果对每个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换o2时,程序P的行为没有变化,那么类型S是类型T的子类型。这个定义比较拗口且难以理解,因此一般使用它的另一个通俗版定义:
里氏代换原则(Liskov Substitution Principle,LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象。
里氏替换原则强调。程序设计中,一个地方可以使用父类对象,那么一定可以使用其子类替换。因为子类是父类的泛化,父类定义的行为和属性,在子类中一定有对应的实现。里氏替换原则是实现开闭原则的保证,只要满足该原则,我们可以在定义对象时使用父类,在程序运行时使用子类来替换,这样可以很方便的扩展系统的功能。
四、依赖倒转原则
依赖倒转原则是Robert C.Martin在1996年为“C++Reporter”所写的专栏Engineering Notebook的第3篇,后来加入他在2002年出版的经典著作Agile Software Development,Principles,Patterns,and Practices一书中。依赖倒转原则定义如下:
依赖倒转原则(Dependency Inversion Principle,DIP):抽象不应该依赖于细节,细节应该依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。
依赖倒转原则强调,在关联关系或者依赖关系中,程序应该引用层次更高的抽象类,而不是具体的类。抽象类被用来设计处理一些共性的问题。这样当系统的行为发生变动时,可以通过增加具体的类的实现来解决具体问题,降低影响范围。
里氏替换原则和依赖倒转原则常常被放在一起使用,用来增加程序的扩展性。下面来看一个例子:
标签:依赖,原则,里氏,七大,倒转,设计,父类,替换 From: https://www.cnblogs.com/xyhj/p/18134000