ocp設計原則,即open close principle,指對程式的擴充套件是開放的,而對修改是關閉的。
*不符合ocp的設計
package day30;
public
class test
}class dog
public
void
sleep()
}class cat
public
void
sleep()
}class person
public
void
feed(cat cat)
}
在上面的**中,如果想養乙隻鳥(想要擴充套件),那麼person類裡就需要修改(需做修改),這不符合「對擴充套件是開放的,對修改是關閉的」。
要符合ocp設計原則,就要依賴抽象而非具體,嘗試對上面的**進重構。dog,cat,bird中有共同的方法sleep()和eat(),嘗試把它們抽象出來(向上抽象到乙個pet類或介面)裡),然後讓person去依賴抽象出的pet,而不是具體的哪一種寵物,這就是依賴抽象而非具體。
*符合ocp的設計
package day30;
public
class
test
}//抽象出的pet
inte***ce
petclass
dogimplements
pet@override
public
void sleep()
}class
catimplements
pet@override
public
void sleep()
}class
person
}
當要擴充套件上面的**,要加入乙個寵物bird類時,不需要修改person類(因為它依賴的是抽象的pet介面),這也就是「對擴充套件是開放的,對修改是關閉的」。
*用繼承關係實現
package day30;
public
class
test
}//抽象出的pet
abstract
class
petclass
dogextends
pet@override
public
void sleep()
}class
catextends
pet@override
public
void sleep()
}class
person
}
OCP筆記部分整理 學習參考
em重建 emca config dbcontrol db repos recreate 第九天 錄影6 關於使用em建立自動作業 開啟em 管理 資料庫排程程式 作業 通過上述建立相關作業實現自動執行 注意 windows裡 oraclejobschedulerorcl 服務必須啟動 第十天 錄影...
python學習手冊筆記 30 類的設計
00.python的oop實現可以概括未三個概念 繼承 繼承是給予python中的屬性查詢 多型 在x.method方法中,method的意義取決於x的型別 封裝 方法和運算子實現行為,資料隱藏預設是一種管理 01.從設計的角度來看,繼承是一種定義集合成員關係的方式 類定義了一組內容屬性,可由具體的...
Java設計模式學習筆記1
用最簡單加減法來舉例 calculate 計算方法介面 public inte ce calculate分別建立add以及sub子類並實現其邏輯 public class addimplements calculate public class subimplements calculate 建立c...