發表文章

PHP OO 物件導向原則:單一職責原則SRP

OO_Principle_SRP 物件導向有五個原則 S.O.L.I.D. : 單一職責原則 SRP (Single Responsibility Principle) 開放封閉原則 OCP (Open Closed Principle) 里氏替換原則 LSP (Liskov Substitution Principle) 介面隔離原則 ISP (Interface Segragation Principle) 依賴反轉原則 DIP (Dependency Inversion Principle) 物件導向的五個基本原則,當這些原則一起被應用時,會使得應用程式更易於維護與擴展。 更多物件導向的理論的學習內容會整理到 PHP OO 的進階教學: 淺談物件導向 SOLID 原則對工程師的好處與如何影響能力 再談 SOLID 原則,Why SOLID?  單一職責原則 SRP (Single Responsibility Principle) 一、定義與說明: 一個類別只能負責一個職責 註:若覺得職責太抽象,可把職責當作是功能。 如果 一個類別做了兩件職責,就必須拆成兩個類別 。 當每個類別只處理一職責的時候,以後某個職責出問題時,只要修改負責那個職責的類別就好了! 如果把多件個職責寫在同一個類別,就好像把「資訊部門」與「行銷部門」放在同一個部門裡面,各自負責不同的職責。 這種情況下,你的類別就會變得龐大又複雜,你可能需要花更多的時間來測試這個類別。 這意味著,未來你需要花更多的 QA 工作時間與努力在這個類別上。 二、遵守單一職責原則的結果: 提高內聚、降低相依性 高內聚: 當一個類別的職責,越多越複雜時,內聚力越低。 當一個類別的職責,越清楚越單純,內聚力越高。(單一功能) 低耦合: 寫程式常常需要引入 (include) 別的套件或類別。如果一個類別需要引入的檔案越少,就是相依性較低; 反觀如果引入的檔案數多,就是相依性較高。 舉例: 一個類別有多個職責,不僅內聚力低,可能還造成更高相依性。 就好像把「資訊部門」與「行銷部門」放在同一個部門裡面,但「資訊部門」需要電腦設備;「行銷部門」需要海報、水彩等文宣工具。 那麼這個「複合式的部門」必須買

PHP OO 物件導向基礎教學

PHP OO 基礎教學 此篇教學只是物件導向的基礎與實作,內容只包含類別與物件的操作,讓不熟悉類別的人可以初識物件導向的好處,並且了解物件與類別的特性與關係。 更多物件導向的理論的學習內容會整理到 PHP OO 的進階教學: 淺談物件導向 SOLID 原則對工程師的好處與如何影響能力 再談 SOLID 原則,Why SOLID? PHP OO 物件導向原則:單一職責原則SRP PHP OO 物件導向原則:開放封閉原則OCP PHP OO 物件導向原則:里氏替換原則LSP PHP OO 物件導向原則:介面隔離原則ISP PHP OO 物件導向原則:依賴反轉原則DIP 進階觀念:再談物件導向設計原則: 單一職責原則,定義、解析與實踐 認識物件導向 Object Oriented: 物件導向是一種寫程式的方式,它傾向讓開發者把類似或有關聯的工作或屬性,組織到類別(classes)裡面。這可以讓程式保持遵守  不重複原則** “don’t repeat yourself” (DRY) **,且更容易維護。 “Object-oriented programming is a style of coding that allows developers to group similar tasks into classes.” 不重複的程式(DRY)是物件導向最主要的優點之一,物件導向嚇跑了很多的開發者,因為它帶引入了一些新的語法,並且一看就知道比直譯程式(procedural)還複雜。但是,其實仔細了解一下,OO 實際上是一種非常直觀且是簡化程式最好的方法。 一、認識物件與類別 Understanding Objects and Classes 在開始更深入了解 OOP 之前,一定要先了解  物件(object) 與 類別(class)  的差異。本章節會介紹 類別(class) 的構造,還有其功能與用途。 類別(class),可以比喻為一間房子的藍圖,類別只是清楚得定義房子的結構與形狀。 物件(object),可以比喻為一棟真的房子, 物件是類別的實例化 。 資料(data)就像是鋼筋、電線、混泥土等蓋房子的材料。如果沒有按照 藍圖 (類別 class)  來組裝,這些