顯示廣告
隱藏 ✕
※ 本文為 dinos 轉寄自 ptt.cc 更新時間: 2015-04-04 22:07:09
看板 Soft_Job
作者 jlhc (H)
標題 Re: [心得] 框架不應該有「MODELS」資料夾
時間 Sat Apr  4 12:19:54 2015


點進原作者部落格後...
發現我看過原作者前一篇在討論"MVC是一個巨大誤會"的文章...

其實還是建議對 MVC 有疑惑的人去了解到底什麼是 Design Pattern,
還有什麼是 Architecture Pattern,以及 MVC 在 Pattern 中的定位。

搞懂上述的前因後果,可以開闊很多眼界...


然後我也有對"為什麼MVC在實作上都不一樣"給了一些說明,
希望能幫助大家理解 MVC 與 Design Pattern 的觀念。

完整內容可以參考部落格圖文版
http://www.hansliu.com/posts/2015/03/why-do-not-mvc-pattern-look-like.html
為什麼 MVC 實作不一樣 | Hans Blog
Hans Blog- life, photo, code ...

 

--- PTT 好讀文字版 ---

MVC 最早是 smalltalk 設計的一個 Pattern,其定義與目的與模擬實作的方法在
Design Pattern 一書中都描述的相當清楚,有興趣的人可以去書店翻一下。

網路上可以參照底下網站的說明:
http://www.tutorialspoint.com/design_pattern/mvc_pattern.htm
Design Patterns MVC Pattern
Design Patterns MVC Patterns - Learning java design patterns in simple and easy steps : A beginner's tutorial containing complete knowledge about an java design patterns starting from its Factory Pattern, Abstract Factory, Singleton, Builder, Prototype, Adapter, Bridge, Filter, Composite, Decorator, ...

 

重點是,Design Pattern 書中不是要強迫你實作的內容百分百一樣,
而是要求你的實作要達到 Pattern 目的,我在這邊列出中文書上對於其目的的說明:

MVC 的目的在於增加彈性再利用性
同一個 model 可以搭配好幾個 view,也可以做出不會改變 model 內容的 view,
同時更嚴苛的要求,view 不應該包含運算的邏輯。

因此不是去追究每套 Framework 在設計上的差異去與定義比較,
或著去分析每套 Framework 命名的規則和目錄的結構,
然後要說它的設計到底要不要叫做 MVC?

而是要去看設計之後是否能達到 MVC 目的。

-

其實 MVC 不是在23個 Design Pattern 之中,它列在書中的前言,
從 Stackoverflow 的討論中可以得知 MVC 應該是一個 Architecture Pattern。

而分類在不同的 Pattern 之中,其當初設計的想法就是有顯著的不同。

Design Pattern 在實作上會存在需要使用同一種技術語言完成的先天條件,
然而 Architectural Pattern 則沒有這樣的限制。

所以每套 Framework 只要實作出來的結果符合 MVC Pattern 的目的,
並且保證使用者擁有 MVC Pattern 的優點,就算實作的方式不盡相同,
也代表其包含(支援) MVC。


-

回頭來看,MVC 目錄結構要怎麼放或怎麼命名都不是 Framework 在意的,
它只是想確保設計可以達到 MVC 的目的,而建置出來的目錄結構與名稱。

至於到底目錄結構要怎麼放或怎麼命名,這應該是由實作團隊之間保持溝通,
搭配充分的說明與註解的文件,讓團隊可以維持開發流程順利的目的。

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 202.174.4.5
※ 文章代碼(AID): #1L7sPm82 (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1428121200.A.202.html
Masakiad: 推 這才是pattern的精神1F 04/04 13:04
Masakiad: 補充一點,就算class diagram一樣也會因為解的force不同
Masakiad: 而被放在不同pattern,比如說template pattern v.s. Str
Masakiad: ategy pattern根本長一樣,但你根本不用質疑他們長這樣
Masakiad: 對還錯,因為他們的想解決的force並不同
johnny94: 推這篇!6F 04/04 15:58
chatnoir: 推7F 04/04 16:22
snaketsai: 推8F 04/04 16:37
GoalBased: 見山是山,見山不是山 。  無招勝有招9F 04/04 17:37

--
※ 看板: dinos 文章推薦值: 0 目前人氣: 0 累積人氣: 370 
分享網址: 複製 已複製
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇