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

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

作者: 阿闯学长 | 来源:发表于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