跟UI相關(guān)的徙融,總是會(huì)用上MVC洒缀、MVP、MVVM 這類三層構(gòu)架。它們都是三層構(gòu)架树绩,實(shí)際上三層構(gòu)架只是做了模塊劃分萨脑,并盡量減少M(fèi)和V層的耦合。最早饺饭,沒有各種分層的時(shí)候渤早,簡單點(diǎn)都是直接讓V耦合M。代碼多起來的時(shí)候瘫俊,根據(jù)情況則有必要進(jìn)行分層鹊杖,帶來了各種好處,也帶來了各種麻煩扛芽。每個(gè)人在用MVC骂蓖、MVP、MVVM的 時(shí)候總是或多或少有疑惑:這代碼非得寫的這么羅嗦川尖?
M登下,基本上就是針對具體領(lǐng)域的「Domain Specification Data Struct」+ 「Extension Method」+「Process Utils」+「Object Relation Map」,
V叮喳, 基本上就是針對具體場景的「Data Related View Struct」+ 「Render Engine」+「XML Based Layout」+「Interact Script」+「Get/Set Data」
C被芳, 意味著M和V的分離只是相對的,V還是會(huì)直接綁定M嘲更,并針對M做Get/Set動(dòng)作筐钟。C也直接監(jiān)聽V的動(dòng)作揩瞪,并操作M和V赋朦。
P,意味著V只提供Render的API和Event李破,M只提供Get/Set/Event宠哄,兩者都通過接口注入P,在P里面組裝嗤攻。M和V完全分離毛嫉,互相不知道對方。
VM妇菱,意味著V主動(dòng)通過VM獲取ViewData承粤,而VM擁有M,也可以將VM看成是ViewAdapter
基本上闯团,這些都是可以通過Code Generator生成Framework辛臊。
以上,統(tǒng)稱MXV房交。是一種用來解耦的彻舰,將耦合轉(zhuǎn)嫁到分層帶來的復(fù)雜。
事實(shí)上對于給定項(xiàng)目來說:max(耦合度)+min(復(fù)雜度)>= 常量。
每個(gè)項(xiàng)目的目的有兩個(gè):完成任務(wù)+積累一些可復(fù)用的模塊刃唤。
如果是長期維護(hù)型的隔心,則需要持續(xù)迭代,達(dá)到上述公式的最小值尚胞。
如果是短期拋棄型的硬霍,則膠合層可高度耦合,做完即扔笼裳。
20130607
@幻灰龍