開閉原則,是一種設計模式,隨著面向對象程序設計的思想,應運而生。
定遠網站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網頁設計、網站建設、微信開發(fā)、APP開發(fā)、響應式網站開發(fā)等網站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司2013年至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選成都創(chuàng)新互聯(lián)公司。
開,指的是可以在源代碼的基礎上進行擴展,比如繼承,接口,抽象類等。在JAVA中,之所以用繼承,是在可以直接調用握慎類庫的前液襲提下,段埋敬對其功能進行擴展。不需要應用者去了解封裝類的內部邏輯就可以做開發(fā)。
閉,指的是原本封裝好的代碼不允許你去更改,比如JDK里面內置的Jar包。
public class TestFruit {
public static void main(String[] args) {
Fruit fruit;
fruit = Gardener.NewFruit("apple");
fruit.grow();
fruit.Flowering();
fruit.Fruiting();
fruit = Gardener.NewFruit("pear");
fruit.grow();
fruit.Flowering();
fruit.Fruiting();
}
}
interface Fruit {
void grow();
void Flowering();
void Fruiting();
}
class Apple implements Fruit {
public void Flowering() {
System.out.println("開花的是蘋果");
}
public void Fruiting() {
System.out.println("結果的是蘋果");
}
public void grow() {
System.out.println("種植的是蘋果");
}
}
class Pear implements Fruit {
public void Flowering() {
System.out.println("開花的是梨");
}
public void Fruiting() {
System.out.println("結果的是梨");
}
public void grow() {
System.out.println("種植的是梨");
}
}
final class Gardener {
public static Fruit NewFruit(String fruitname) {
if (fruitname.equals("apple")) {
return new Apple();
} else if (fruitname.equals("pear")) {
return new Pear();
}
return null;
}
}
不知這樣寫是否正確態(tài)梁。個人認為這應該是昌碰一個工廠模式吧。
所有類的實現(xiàn)都由工廠類(也就是園丁類)完成。
寫的只是一個簡單工廠模式。
通過抽象類及接口,規(guī)定了具體類的特征作為抽象層,相對穩(wěn)定,不需更改,從而帆迅運滿足“對修改關閉”;而從抽象類導出的具體類可以改變系統(tǒng)的行為,從而滿足“對擴展開放”。開閉原則在問題描述時就已經實現(xiàn)了。當然這只是對于客戶端(也就是測試類)來說,測試類只需要提供要創(chuàng)建對象的描述,系統(tǒng)自動創(chuàng)建相應的對象。而對于工廠類并沒有滿足開閉原則。
對擴張開放,對修改關閉 就是一個中梁類中可以注入其他類對隱賣象,但是不能修改,因為修改了賣攜運的話子類也變了 設計模式最基礎的知識
開閉原則即封閉對原來代碼的修改,開放對原來代碼的擴展中襪(如類的繼承,接口的實現(xiàn)等)
開閉原則是一種設計思想,并不局限于java語言
大概意思就是這些,但是要真正隱搜掌賣攜激握運用開閉原則,還是要多多實踐,多多體會