自治视图
说到自治视图很多人会感到陌生但是我们(尤其是NET开发人员)可能经常在采用这种模式来设计我们的应用Windows Forms和ASPNET Web Forms虽然分别属于GUI和Web开发框架但是它们都采用了事件驱动的开发方式所有与UI相关的逻辑都可以定义在针对视图(Windows Forms或者Web Forms)的后台代码(Code Behind)中并最终注册到视图本身或者视图元素(控件)的相应事件上
一个典型的人机交互应用具有三个主要的关注点即数据在可视化界面上的呈现UI处理逻辑(用于处理用户交互式操作的逻辑)和业务逻辑自治视图模式将三者混合在一起势必会带来如下一些问题
业务逻辑是与UI无关的应该最大限度地被重用由于业务逻辑定义在自治视图中相当于完全与视图本身绑定在一起如果我们能够将UI的行为抽象出来基于抽象化UI的处理逻辑也是可以被共享的但是定义在自治视图中的UI处理逻辑完全丧失了重用的可能
业务逻辑具有最强的稳定性UI处理逻辑次之而可视化界面上的呈现最差(比如我们经常会为了更好地呈现效果来调整HTML)如果将具有不同稳定性的元素融为一体那么具有最差稳定性的元素决定了整体的稳定性这是短板理论在软件设计中的体现
任何涉及UI的组件都不易测试UI是呈现给人看的并且用于与人进行交互用机器来模拟活生生的人来对组件实施自动化测试不是一件容易的事自治视图严重损害了组件的可测试性
为了解决自治视图导致的这些问题我们需要采用关注点分离(Seperation of ConcernsSoC)的方针将可视化界面呈现UI处理逻辑和业务逻辑三者分离出来并且采用合理的交互方式将它们之间的依赖降到最低将三者分而治之自然也使UI逻辑和业务逻辑变得更容易测试测试驱动设计与开发变成了可能这里用于进行关注点分离的模式就是MVC
返回目录ASPNET MVC 框架揭秘
编辑推荐
Java程序性能优化让你的Java程序更快更稳定
Visual C++音频/视频技术开发与实战