zoukankan      html  css  js  c++  java
  • 开闭原则

    参考: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;
        }
    }
    
  • 相关阅读:
    个人总结11
    进度条4,5
    对vivo自带输入法的评价
    个人总结10
    hdu5589Tree
    HDU5213 Lucky
    2018icpcShenYangE
    bzoj3683: Falsita
    cf396C. On Changing Tree
    cf600E. Lomsat gelral
  • 原文地址:https://www.cnblogs.com/liuzhidao/p/13723285.html
Copyright © 2011-2022 走看看