學習筆記(01):第1章 軟件架構設計原則-1.Open-Closed Principle 開閉原則

立即學習:https://edu.csdn.net/course/play/28942/403588?utm_source=blogtoedu

開閉原則

對擴展開放,修改關閉

eg:接口中定義三個方法分別獲取課程的三個屬性

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

Java課程業務類實現自己的業務

public class JavaCourse implements ICourse {
    private Integer id;
    private String name;
    private Double price;

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

    @Override
    public Integer getId() {
        return this.id;
    }

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

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

需求變更:java課程需要打折,根據開閉原則不更改原有代碼,創建java打折業務類

public class JavaDiscountCourse extends JavaCourse {

    public JavaDiscountCourse(Integer id, String name, Double price){
        super(id, name, price);
    }

    public Double getDiscountPrice(){
        return super.getPrice() * 0.8;
    }
}

Tips:

這使iCourse獲取不到getDiscountPrice方法

ICourse iCourse = new JavaDiscountCourse(1,"Java虛擬機",1180D);

需要

iCourse = (JavaDiscountCourse)iCourse
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章