开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。
    在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。
    所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的 效果,我们需要使用接口和抽象类。面向抽象编程, 不是面向实现编程, 抽象是文档的

    以一个课程设计体系来举例

    1. public interface ICourse {
    2. Integer getId();
    3. String getName();
    4. Double getPrice();
    5. }

    整个课程有java, 大数据, python

    1. public class JavaCourse implements ICourse {
    2. private Integer id;
    3. private String name;
    4. private Double price;
    5. public JavaCourse(Integer id, String name, Double price) {
    6. this.id = id;
    7. this.name = name;
    8. this.price = price;
    9. }
    10. @Override
    11. public Integer getId() {
    12. return id;
    13. }
    14. @Override
    15. public String getName() {
    16. return name;
    17. }
    18. @Override
    19. public Double getPrice() {
    20. return price;
    21. }
    22. }

    现在我们要给java课程做优惠活动, 如果修改javaCourse中的getPrice()方法, 存在一定风险, 可能影响其他调用.
    我们在不修改代码的前提下实现这个功能, 我们现在实现一个JavaDiscountCourse :::info 定义接口并实现方法, 不修改原有的, 只通过继承来扩展, 都可以体现出开闭原则 :::

    1. public class JavaDiscountCourse extends JavaCourse {
    2. public JavaDiscountCourse(Integer id, String name, Double price) {
    3. super(id, name, price);
    4. }
    5. //获取原价
    6. public Double getOriginPrice() {
    7. return super.getPrice();
    8. }
    9. public Double getPrice() {
    10. return super.getPrice() * 0.61;
    11. }
    12. }

    image.png