心法
[Read more…] about PHP物件導向 – 依賴反轉(Dependency-Inversion Principle, DIP)稱為相依性反轉、依賴倒置原則。
解除高階模組 (Caller 呼叫者) 與 低階模組 (Callee 被呼叫者)的 耦合關係,使高階模組不再直接依賴低階模組。
相依於抽象或介面。而不相依於細節。
隨手紀錄
by valar
[Read more…] about PHP物件導向 – 依賴反轉(Dependency-Inversion Principle, DIP)稱為相依性反轉、依賴倒置原則。
解除高階模組 (Caller 呼叫者) 與 低階模組 (Callee 被呼叫者)的 耦合關係,使高階模組不再直接依賴低階模組。
相依於抽象或介面。而不相依於細節。
by valar
[Read more…] about PHP物件導向 – 介面隔離(Interface Segregation Principle, ISP)介面不應該強迫客戶依賴於它們用不到的方法。
類別之間的相依關係應該建立在最小的介面上。
把 Interface 當成「可以做什麼」, 而不是「是一個什麼」。
減少讓每個 Interface 可以做的事。
如果發現有空實作時,就表示 Interface 可以再細化。
by valar
[Read more…] about PHP物件導向 – 最小知識(Least Knowledge Principle, LKP)又稱迪米特法則。
高階模組不應該知道低階模組的內部如何運作 。
低階模組不應該暴露內部物件,不應該暴露實踐細節,應僅提供方法給高階模組使用。
不必要的公開方法就設為 private 或 protected。
by valar
[Read more…] about PHP物件導向 – 里氏替換(Liskov Substitution Principle, LSP)子類別可以擴展父類別功能,但不能改變父類別原有功能。
不能去繼承不合適的,有多餘方法或者屬性的類別。
by valar
軟體中的對象(類,模塊,函數等等)應該對於擴展是開放的,但是對於修改是封閉的 。
意思代表盡量在不修改原本程式碼下,進行擴充。
[Read more…] about PHP物件導向 – 開放封閉(Open Closed Principle, OCP)by valar
by valar
物件導向三大特性:封裝(Encapsulation)、繼承(Inheritance)、多型(Polymorphism),此三者具有次序性 , 沒有封裝就不可能有繼承 、沒有繼承就不可能有多型。
由於三大特性的運用跟類別(class)、抽象類別(abstract)、介面(interface)等特性跟運用息息相關,建議先熟悉類別(class)、抽象類別(abstract)、介面(interface) 的運用在來了解物件導向三大特性會比較快上手。
by valar
by valar