** 本文同步發表於 FB 社團-軟體設計鮮思維 **
SRP, Single Responsibility Principle (單一責任原則)。
這是上星期課堂中,當我解釋 Multi-tier MVC 分層結構時,聽到學員告訴我的。
哈,這是我第二次遇到學員有告訴我這個術語,看來都蠻熟悉 Martin 在 "Agile Software Development, Principles, Patterns, and Practices" 一書內所提到的幾個軟體設計原則。
不過當我問他們工作上是否至少有把 UI 與 Logic/Data Acess 層分離? 沒有!還是全都攪在一起,沒有人講究上述分層的 "基本責任分派"。
沒有「知行合一」,確實實踐並從實務中體會與調整作法,那麼,學會 "背" 這些術語是沒啥用處的!
其實也只有一個字需要真正了解:責任 (responsibility)。
o Web UI (view & ui controller) / Standalone UI:Presentation (只負責傳送與回傳已運算資訊)。
o Domain Controller:負責控制流程 (control flow)。
o DAO (data access object)/ Adapter:負責連結資料庫/外部系統。
o Entity (或稱 business) Object:負責處理邏輯運算。
確實理解 "responsibility" 這個術語可不是用背的,而是身體力行,從過程當中去體會該術語的「真諦」。
從原點出發,一個詞彙可通一堆觀念。如當確實做好單一類別的責任分派時,所得到的效果就是「高內聚力 (high cohesion)」—責任明確。