设计模式系列(二)设计模式原则——里氏替换原则(Liskov Substitution Principle)

里氏替换原则是面向对象设计的基本原则之一,由Liskov女士在1988年提出。该原则规定子类应当可以替换父类并保持程序行为不变。遵循这一原则可以降低耦合,提高软件系统的可扩展性和可维护性。在继承时,应谨慎重写父类方法,避免影响原有行为。文中通过代码示例展示了如何遵循里氏替换原则进行类的设计,以减少因继承导致的问题。

里氏替换原则用于规范类的继承,防止类父类的修改过多影响到子类而提出的一种设计原则。

  • 里氏替换原则在1988年,由麻省理工学院的Liskov女士提出的。

  • 如果对每个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序 P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1 的子类型。所有引用基类的地方必须能透明地使用其子类的对象

  • 在使用继承时,遵循里氏替换原则,在子类中尽量不要重写父类的方法

  • 里氏替换原则告诉我们,继承实际上让两个类耦合性增强了,在适当的情况下,可 以通过聚合,组合,依赖来解决问题。

举例:这条原则用于规范的约束,继承需要谨慎使用

public class Liskov {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.func1(8, 3));
        
        B b = new B();
        System.out.println(b.func1(8, 3)); // 求 8 - 3,由于B类重写A类的方法而造成了歧义
        System.out.println(b.func2(8, 3)); // 
    }
}

class A {
    public int func1(int a, int b) {
        return a - b;
    }
}

class B extends A{
    // 重写了父类的func1方法
    public int func1(int a, int b) {
        return a + b;
    }
    
    public int func2(int a, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackie_05

oo

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值