设计模式原则篇:(2)里氏替换原则--Listkov Substitution Principle

本文探讨了里氏替换原则的重要性和含义,指出继承虽有优点如代码共享和重用,但也存在侵入性、灵活性降低和耦合增强等问题。里氏替换原则确保子类在父类出现的地方可以透明替换,保持程序行为一致。文中通过正方形与长方形的类比解释了违反该原则可能导致的问题,并强调正确应用该原则能增强程序健壮性,同时也是实现开闭原则的关键。
摘要由CSDN通过智能技术生成

              在学习里氏替换原则之前,首先应该理解继承的概念与好处,我们知道在java程序设计语言

     中继承是通过extends关键字实现的,那么继承到底有哪些优点呢?

                 1、实现了代码共享

                 2、提高了代码的重用性

                 3、提高了代码的可扩展性

             不过有利必有弊,继承虽然带来了很大的好处,但同时也有一定的弊病:

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

                   2、子类必须继承父类的所有属性和方法,降低了代码的灵活性

                   3、增强了耦合性,但父类的属性被修改的时候,必须考虑到对子类的影响,使得代码

                          需要重构。

           再来看看里氏替换原则的定义吧!

           里氏替换原则有两种定义:

                          第一种定义,也是正宗的定义:如果对每一个类型为T1的对象o1,都有类型为T2的

               对象o2  使得在程序中所有未o1的对象都替换为o2的时候,程序的行为没有发生变换,则

              T2是T1的子类型

                          第二种定义:所有可以使用父类的地方,都可以透明的使用其子类.通俗的讲就是父类

               出现的地方,都可以用子类替换,程序不会出错,且程序的行为与替换之前一样!

                     如何理解里氏替换原则呢?首先举个经典的例子吧!

                  1、"正方形不是长方形".

                 我们知道在数学中正方形就是长方形,因此上述说法貌似不正确,不过真是

              这样吗?看一段代码先吧。

                  长方形类

package com.kiritor;

/**
 * @author Kiritor 
 * 长方形
 */
public class Rectangle {
	private double length;
	private double width;

	public double getLength() {
		return length;
	}

	public void setLength
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值