对于应用程序通用的操作,使用commonBean是正确/最佳做法吗?在我的例子中,这将是一个注销函数,它清除会话bean的记录值。
我的一位同事告诉我,每个视图只能使用一个控制器bean,但是在多个bean中复制相同的方法似乎是浪费。
答案 0 :(得分:5)
您的同事将视图和控制器的分离称为纯MVC模式中的松散定义原则。 JSF应用程序中的Managed Bean非常适合Controller的角色,但由于您所声明的原因,这不应被视为硬性规定。
我引用了企业应用程序架构模式中的Martin Fowler:
正如我所说,MVC的价值在于它的两个分离。其中有 表达和模型的分离是最重要的 软件中的设计原则,也是唯一不应该遵循的原则 它是在非常简单的系统中,模型中没有真正的行为 无论如何。一旦你得到一些非视觉逻辑,你应该申请 分离。不幸的是,很多UI框架都是如此 很难,而那些不经常教的人没有分开。
视图和控制器的分离不那么重要,所以我只是 建议在它真的有用时这样做。对于富客户端 系统,虽然在Web中很常见,但最终几乎没有 控制器分离出来的前端。大部分的 这里的网页设计模式基于这一原则。
基本上Fowler声明绑定视图到控制器并不像绑定模型那样重要,因此如果有帮助的话,在视图中使用控制器或每个视图使用多个控制器肯定是可以接受的。