首页 > 其他分享 >设计模式原则之:里氏替换原则

设计模式原则之:里氏替换原则

时间:2023-08-03 22:33:47浏览次数:30  
标签:设计模式 return 原则 int 里氏 class Person calc public

示例已发推论

 

/**
 * @description: 示例引发里氏替换原则的实现
 * @author: abel.he
 * @date: 2023-08-03
 **/
public class Test1 {

    public static void main(String[] args) {
        Person person = new Person();
        System.out.println("9 + 2 = " + person.calc(9, 2));

        Child child = new Child();
        // 这里本意是求出9+2 的和
        System.out.println("9 + 2 = " + child.calc(9, 2));
    }

}

class Person {

    public int calc(int a, int b) {
        return a + b;
    }
}

class Child extends Person {

    public int calc(int a, int b) {
        return a - b;
    }

    public int calc1(int a, int b) {
        return calc(a, b) + 9;
    }

}

 

里氏替换原则优化

 

/**
 * @description: 里氏替换原则的实现
 * @author: abel.he
 * @date: 2023-08-03
 **/
public class Test1 {

    public static void main(String[] args) {
        Person person = new Person();
        System.out.println("9 + 2 = " + person.calc(9, 2));

        Child child = new Child();
        // 这里本意是求出9+2 的和
        System.out.println("9 - 2 = " + child.calc(9, 2));

        System.out.println("9 + 2 = " + child.calc2(9, 2));
    }

}

class Base {

}

class Person extends Base {

    public int calc(int a, int b) {
        return a + b;
    }
}

class Child extends Base {

    private Person person = new Person();

    public int calc(int a, int b) {
        return a - b;
    }

    public int calc1(int a, int b) {
        return calc(a, b) + 9;
    }

    public int calc2(int a, int b) {
        return person.calc(a, b);
    }

}

 

  

 

标签:设计模式,return,原则,int,里氏,class,Person,calc,public
From: https://www.cnblogs.com/abel-he/p/17604682.html

相关文章

  • 设计模式 C++
    参考博客:https://blog.csdn.net/weixin_45712636/article/details/124328504参考视频:https://www.bilibili.com/video/BV1Np4y1z7BU?p=1&vd_source=fce372ba0aa0bf9ed76094e3192b7015参考文档:https://bright-boy.gitee.io/technical-notes/#/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%......
  • 【设计模式】享元模式Flyweight:通过共享对象减少内存加载消耗
    (目录)享元模式Flyweight:通过共享对象减少内存加载消耗享元模式的用意享元模式以共享的⽅法⾼效地⽀持⼤量的细粒度对象,享元对象能做到共享的关键是区分内蕴状态和外蕴状态。⼀个内蕴状态是存储在享元对象内部的,并且是不会随环境改变⽽有所不同的,因此⼀个享元可以具有内蕴状态......
  • 【设计模式】装饰器模式Decorator:在基础组件上扩展新功能
    (目录)装饰器模式看上去和适配器模式、桥接模式很相似,都是使用组合方式来扩展原有类的,但其实本质上却相差甚远呢。简单来说,适配器模式侧重于转换,而装饰模式侧重于动态扩展;桥接模式侧重于横向宽度的扩展,而装饰模式侧重于纵向深度的扩展。原理装饰模式的原始定义是:允许动态地向......
  • 单一职责原则SRP
    所谓单一职责原则,指的是,一个类应该仅有一个引用它变化的原因。这里变化的原因就是所说的“职责”,如果一个类有多个引起它变化的原因,那么也就意味着这个类有多个职责,再进一步说,就是把多个职责耦合在一起了。这会造成职责的相互影响,可能一个职责的变化,会影响到其他职责的实现,甚至引起......
  • 开放-关闭原则OCP
    所谓开放-关闭原则,指的是,一个类应该对扩展开放,对修改关闭。一般也被简称为开闭原则,开闭原则是设计中非常核心的一个原则。开闭原则要求的是,类的行为是可以扩展的,而且是在不修改已有代码的情况下进行扩展,也不必改动已有的源代码或者二进制代码。实现开闭原则的关键就在于合理地抽象......
  • PHP设计模式汇总
    PHP设计模式汇总没想到啊,没想到。自己竟然坚持了下来,完成了设计模式深入的学习,并且输出了23篇用php演示的设计模式的文章。但这不是最主要的,更深层次的收获是顺便背下了这些模式的定义及类图。在深入学习了设计模式之后,对Laravel等框架的架构理解也更清楚明了了。就像我在很多模式......
  • Java设计模式--装饰器模式
    Java设计模式--装饰器模式一、问题背景在项目场景中,有这样一个需求,需要对录入的加班进行规则校验,包括但不限于,对加班的录入时间进行检查,对录入的加班类型进行检查,对加班日期的班次进行对比检查,对潜入系统的时长进行对比检查等等。具体来说,就是对一条加班记录,进行多种规则的检查......
  • 【设计模式】适配器模式Adapter:处理不同 API 接口的兼容性
    (目录)适配器模式适配器模式(AdapterPattern)是作为两个不兼容的接⼝之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独⽴接⼝的功能。在某些时候,客户期望获得某种功能接⼝但现有的接⼝⽆法满⾜客户的需求,例如美国的正常供电电压为110V,⼀个中国⼈带了⼀款中国制造......
  • Java面试题 P32:数据库篇:MySql篇-MySql优化-索引-索引创建原则有哪些?
             ......
  • Java设计模式
    #Java设计模式GoF(最先开始着手进行设计模式分类整理工作)对设计模式的定义是:设计模式是在特定的环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用。一、面向对象设计的七大原则1.1单一职责原则定义:一个对象应该只包含单一的职......