Liskov Substitution Principle, 由Barbara Liskov 和 Jeannette Wing在93年提出,其原文为:“Let q(x) be a property provable about objects x of type T. Then q(y) should be true for objects y of type S where S is a subtype of T. ” 。通俗一点来说,LSP的意思是指,“An instance of a class should function as an instance of its superclass” (《Design Pattern Java Workbook》)。
字面上的意思不好理解,举一段程序:
import java.util.*;
public class a{
public static void main(String args[]){
String names[] = {"name1", "name2"};
List L = Arrays.asList(names);
L.add("name3");
}
}
这段程序运行结果是什么?答案是:
java.lang.UnsupportedOperationException
at java.util.AbstractList.add(Unknown Source)
at java.util.AbstractList.add(Unknown Source)
at a.main(a.java:7)
Exception in thread "main"
抛出异常的原因是由 asList() 返回的List不支持add方法。而我们只要把代码改为:
List L = new ArrayList(Arrays.asList(names));
运行就正常了。
我们知道,List, ArrayList, Array 都有一个公共的父类(接口)Collection, asList 最初就是在Collection声明的,所以我们说,这里违反了LSP原则。(当然,从字面上讲,这么说还需要我们把Java接口看成pure的虚类来看)
其实这只是很小的一点,记下备忘
分享到:
相关推荐
里氏替换原则(Liskov Substitution Principle, LSP)是面向对象编程设计的基本原则之一,由美国计算机科学家芭芭拉·利斯科夫(Barbara Liskov)于1987年提出。该原则强调了继承在设计类层次结构时的重要性与正确性...
2、里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】:继承与派生的规则.(子类可替换父类) 3、依赖倒转原则【DEPENDENCE INVERSION PRINCIPLE】:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该...
2 里氏替换原则-Liskov Substitution Principle (LSP) 3 接口分隔原则-Interface Segregation Principle (ISP) 4 单一职责原则-Single Responsibility Principle (SRP) 5 开闭原则-The Open-Closed ...
里氏替换原则(Liskov Substitution Principle,LSP) 只要父类出现的地方都可以用子类替换。 依赖倒置原则(Dependece Inversion Principle,DIP) 面向接口编程。细节应该依赖抽象。 依赖可以传递。 依赖有三...
里氏代换原则(Liskov Substitution Principle) 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的...
Avoiding conditionals by obeying the Liskov Substitution Principle Making targeted improvements by reducing Code Smells Improving changeability with polymorphism Manufacturing role-playing objects ...
里氏替换原则(Liskov Substitution Principle,LSP):子类应该能够替换掉父类并且工作正常,即子类必须能够完全替代父类的功能而不产生错误。这个原则保证了代码的可靠性和稳定性。 接口隔离原则(Interface ...
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能...
2. **替换原则(Liskov Substitution Principle, LSP)** LSP原则指出,子类应该可以替换其父类并能在任何父类可以出现的地方使用。这意味着子类不应破坏基类的原有行为。例如,圆是椭圆的特殊情况,所以任何使用...
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能...
Liskov Substitution Principle,LSP(里氏代替原则)指的是子类必须替换掉它们的父类型。也就是说,在软件开发过程中,子类替换父类后,程序的行为是一样的。只有当子类替换掉父类后,此时软件的功能不受影响时,...
2、里氏代换原则(Liskov Substitution Principle) 只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。 3、依赖倒转原则(Dependence ...
应届生及亚马逊面试必考,IT求职必备基础。...L - Liskov substitution principle 里氏替换原则 I - Interface segregation principle 接口分离原则 D - Dependency Inversion Principle 依赖反转原则
2、里氏代换原则(Liskov Substitution Principle) 3、依赖倒转原则(Dependence Inversion Principle) 4、接口隔离原则(Interface Segregation Principle) 5、迪米特法则(最少知道原则)(Demeter Principle)...
前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第3篇,里氏替换原则LSP(The Liskov Substitution Principle )。 英文原文:...
3. 里氏替换原则(Liskov Substitution Principle, LSP) 子类必须能够替换其基类,而不影响程序的正确性。这意味着子类可以无缝地在基类被使用的任何地方使用,保持接口的一致性。 4. 接口隔离原则(Interface ...
以下将详细介绍面向对象设计的六大原则:单一职责原则(Single Responsibility Principle, SRP)、开放封闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)、依赖倒置原则...
2. 里氏代换原则(Liskov Substitution Principle):使用的基类可以在任何地方使用继承的子类,完美的替换基类。 3. 依赖倒转原则(Dependence Inversion Principle):面向接口编程,依赖于抽象而不依赖于具体。 4...
3. **里氏替换原则(Liskov Substitution Principle, LSP)**:子类型必须能够替换它们的基类型,而不影响程序的正确性。这保证了代码的可替换性和兼容性。 4. **接口隔离原则(Interface Segregation Principle, ...
6. 里氏替换原则(Liskov Substitution Principle) 里氏替换原则是指子类可以替换父类。里氏替换原则可以使代码更灵活、更易维护。 7. 组合优于继承原则(Composition Over Inheritance Principle) 组合优于...