在FubuMVC中,行为的实现方式实际上是装饰模式和职责链模式的混合体。
行为对请求管道拥有完全控制权,它可以添加或修改请求,动态选择需要执行的action以及是否要执行action,它可以修改或者完全替换action的输出结果,并且可以在完成请求处理后执行一些代码。实际上,生成显示结果本身也是一个行为。FubuMVC使用行为本身来实现基本的功能,这些基本功能和行为可以根据需要被替换或修改。
Mark Nijhof在他的文章FubuMVC and the Front Controller style framework中展示了这个管道:
Chad说,“行为开启了在其他框架中难以实现的可能”:
·将整个请求包装在try/catch/finally块中的能力
·多级缓存的能力
·根据运行时环境或请求时间,动态决定执行哪个action的能力
MVC模式的另一个方面,是使得开发人员可以对传统意义上无法进行测试的UI部分进行单元测试。Chad描述了微软是如何实现这一点的: