開閉原則(Open-Closed Principle,OCP):是指一個軟件實體(如類、模塊、函數)應該對擴展開放,對修改關閉。開閉是對擴展和修改兩個行爲的一個原則。強調的是用抽象構建框架,用實現擴展細節,提高了軟件系統的複用性好可維護性。
開閉原則的核心思想就是面向抽象編程,如以下代碼:
1.先寫一個課程接口
public interface ICourse{
Integer getId();
String getName();
Doble getPrice();
}
2.課程有Java,大數據,人工智能,Python 等。然後創建一個 Java 課程類 JavaCourse.
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;
}
public Integer getId(){
return this.Id;
}
public String getName(){
return this.name;
}
public Doble getPrice(){
return this.price;
}
}
3.如果我們Java課程需要做活動打折,直接修改JavaCourse中的getPrice()方法,可能會導致其他地方的使用。那如何實現java課程打折功能呢?我們可以新增一個java打折類JavaDiscount.
public class JavaDiscount extends JavaCourse{
public JavaDiscount(Integer id, String name,Double price){
super(id,name,price);
}
public Double getOriginPrice(){
return super.getPrice();
}
public Double getPrice(){
return super.getPrice*0.78;
}
}
4.如果我們需要對大數據課程進行打折,也可以爲大數據課程添加一個新的打折類BigDataDiscount,這樣就可以在不修改原先的代碼,只需要添加一個新的類就可以實現功能。