设计模式的七大原则——里氏替换原则

里氏替换原则:   继承在给程序带来便利的同时,也带来弊端。如果子类需要修改父类的方法时,必将对继承的整体体系造成破坏。在适当的情况下,可以通过聚合,组合,依赖 来解决问题。换句话说,所有引用基类的地方必须能透明的使用其子类的对象。

/**
 * 底层普通基类,用来解决继承的耦合性问题
 */
class Base {

}



/**
 * 实体类A,用于计算两个数的差
 */
class A extends Base {

    // 返回两个数的差
    public int publ1(int number1, int number2) {

        return number1 - number2;

    }

}



/**
 * 实体类B,用于计算两个数的和,如若继承A类, 无意重写后,
 * B类如果需要使用A类中的publ1方法就会造成逻辑错误
 */
class B extends Base {

    // 使用聚合的方式引用A类中的方法
    private A a = new A();

    // 返回两个数的和
    public int publ1(int number1, int number2) {

        return number1 + number2;

    }

    // 返回两个数的差
    public int publ2(int number1, int number2) {

        return this.a.publ1(number1, number2);

    }

}



public static void main(String[] args) {

    A a = new A();

    // 计算5和3的差,输出结果:5 - 3 = 2
    System.out.println("5 - 3 = " + a.publ1(5, 3));

    B b = new B();

    // B继承A类,使用B类中的A类求差方法,无意重写A类方法,输出结果:5 - 3 = 8
    System.out.println("5 - 3 = " + b.publ1(5, 3));

    // B继承Base类,去除类的耦合性,计算5和3的和,输出结果:5 + 3 = 8
    System.out.println("5 + 3 = " + b.publ1(5, 3));

    // B继承Base类,去除类的耦合性,计算5和3的差,B聚合A类,输出结果:5 - 3 = 2
    System.out.println("5 - 3 = " + b.publ2(5, 3));

}

解析:子类尽量不要重写父类中的方法,继承使得两个类的耦合性增强了,所以我们尽量使用聚合组合依赖 来解决问题

注意事项:

  • 代码要遵循里氏替换原则;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值