跟UI相关的,总是会用上MVC、MVP、MVVM 这类三层构架。它们都是三层构架,实际上三层构架只是做了模块划分,并尽量减少M和V层的耦合。最早,没有各种分层的时候,简单点都是直接让V耦合M。代码多起来的时候,根据情况则有必要进行分层,带来了各种好处,也带来了各种麻烦。每个人在用MVC、MVP、MVVM的 时候总是或多或少有疑惑:这代码非得写的这么罗嗦?
M,基本上就是针对具体领域的「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还是会直接绑定M,并针对M做Get/Set动作。C也直接监听V的动作,并操作M和V。
P,意味着V只提供Render的API和Event,M只提供Get/Set/Event,两者都通过接口注入P,在P里面组装。M和V完全分离,互相不知道对方。
VM,意味着V主动通过VM获取ViewData,而VM拥有M,也可以将VM看成是ViewAdapter
基本上,这些都是可以通过Code Generator生成Framework。
以上,统称MXV。是一种用来解耦的,将耦合转嫁到分层带来的复杂。
事实上对于给定项目来说:max(耦合度)+min(复杂度)>= 常量。
每个项目的目的有两个:完成任务+积累一些可复用的模块。
如果是长期维护型的,则需要持续迭代,达到上述公式的最小值。
如果是短期抛弃型的,则胶合层可高度耦合,做完即扔。
20130607
@幻灰龙