1. 程式人生 > 其它 >設計原則之開閉原則

設計原則之開閉原則

Open-Closed Principle開閉原則
指一個軟體實體如類、模組、函式應該對擴充套件開發,對修改關閉。所謂的開閉,也正是對擴充套件和修改兩個行為的一個原則。強調的是用抽象構建框架,用實現擴充套件細節。可以提高軟體系統的可複用及可維護性。開閉原則,是面向物件設計中最基礎的設計原則。它知道我們如何建立未定靈活的系統,例如:版本更新,我們儘可能不修改原始碼,但是可以增加新功能。
實現開閉原則的核心思想就是面向抽象程式設計,
以咕泡學院的課程體系為例,首先建立一個課程介面 ICourse: public interface ICourse { Integer getId(); String getName(); Double getPrice(); } 整個課程生態有 Java 架構、大資料、人工智慧、前端、軟體測試等,我們來建立一個 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 Double getPrice()
{
return this.price;
}
}
現在我們要給 Java 架構課程做活動,價格優惠。如果修改 JavaCourse 中的 getPrice()方法,則會 存在一定的風險,可能影響其他地方的呼叫結果。我們如何在不修改原有程式碼前提前下,實現價格優惠 這個功能呢?現在,我們再寫一個處理優惠邏輯的類,JavaDiscountCourse 類(思考一下為什麼要叫 JavaDiscountCourse,而不叫 DiscountCourse)
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.61;
}
}
白紙一張