美文网首页
《设计模式之蝉》 第二章  里氏替换原则

《设计模式之蝉》 第二章  里氏替换原则

作者: 阿闯学长 | 来源:发表于2018-02-02 16:08 被阅读12次
    《设计模式之蝉》 第二章  里氏替换原则

    里氏替换原则的英文名称是Liskov Substitution Principle,简称:LSP;

    定义 : 只要父类出现的地方子类就一定可以出现,而且替换为子类也不会出现任何异常或错误,使用者不需要知道是父类还是子类.但是返回来就不行了,有子类出现的地方,

    使用规范 :

    1. 子类必须完全实现父类的方法,如果子类无法完全实现父类的方法,则建议断开父子继承关系,采用依赖 | 聚集 | 组合 等关系来代替

    2. 子类可以有自己的个性

    3. 覆盖或实现父类的方法时,输入参数可以被放大,比如父类中有一个方法的输入参数是 HashMap,子类的参数可以是 Map 类型,这样父类就可以被子类替换,如果反过来,则违背了里氏替换原则,所以子类中方法的前置条件必须与父类的

        被覆写的方法的前置条件相同或者更宽松

    4.  覆写或实现父类的方法时,输出结果可以被缩小,也就是说如果父类方法返回的类型 T,子类的相同方法(重载或覆写)的返回值类型 S,S 和 T 要么同类型,要么 S 是 T 的子类;跟上面的道理一样

    他的优点:

    代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;

    提高代码的重用性;

    子类可以形似父类,但又异于父类;

    提高代码的可扩展性,实现父类就可以为所欲为;

    提高产品或项目的开放性;

    既然有优点,那缺点肯定是有的,

    缺点是:

    继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法。

    降低代码的灵活性。子类必须拥有父类的属性和方法,让子类有了约束性;

    增强了耦合性。

    相关文章

      网友评论

          本文标题:《设计模式之蝉》 第二章  里氏替换原则

          本文链接:https://www.haomeiwen.com/subject/jnwjzxtx.html