ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

开闭原则

2020-09-24 11:32:25  阅读:191  来源: 互联网

标签:name 原则 Double price 开闭 getPrice public String


参考:Spring5核心原理与30个类手写实战

开闭原则(Open-Closed)是指一个软件实体(如类,模块和函数)应该对扩展开放,对修改关闭.所谓的开闭,正是对扩展和修改两个行为的一个原则.它强调的是用抽象构建架构,用实现扩展细节,可以提高软件系统的可复用性和可维护性,开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定,灵活的系统.例如版本更新,我们尽可能不修改源代码,但可以增加新功能.

开闭原则的核心思想就是面向抽象编程.例如: 以课程体系为例,首先创建一个课程接口:

public interface Icourse {
    Integer getId();
    String getName();
    Double getPrice();
}

整个课程有java架构,大数据,AI,前端,软件测试等,下面创建一个java架构课程的类JavaCourse:

public class JavaCourse implements Icourse {
    private Integer Id;
    private String name;
    private Double price;

    public JavaCourse(Integer id, String name, Double price) {
        Id = id;
        this.name = name;
        this.price = price;
    }

    @Override
    public Integer getId() {
        return Id;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public Double getPrice() {
        return price;
    }
}

现在需求是给Java架构课程做活动,价格优惠.如果修改JavaCourse中的getPrice()方法,则存在一定的风险,可能影响其他地方的调用结果.我们如何在不修该原有代码的前提下,实现价格优惠这个功能呢?现在,我们再编写一个处理优惠逻辑的类JavaDiscountCourse

public class JavaDiscountCourse extends JavaCourse{
    public JavaDiscountCourse(Integer id, String name, Double price) {
        super(id, name, price);  //调用父类的构造方法
    }
    public Double getOriginPrice(){
        return super.getPrice();
    }
    //打折
    public Double getPrice(){
        return super.getPrice() * 0.88;
    }
}

标签:name,原则,Double,price,开闭,getPrice,public,String
来源: https://www.cnblogs.com/liuzhidao/p/13723285.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有