当我们使用MVC模式开发时,碰巧需要使用其他方法来实现我们模型的基本操作。
一个例子是 agregate getter ,它返回持久性基础上用户记录的总数。
int getUsersCount();
这些方法的最佳位置在哪里?在模型中?在控制器?
特定SDK /语言之间有什么区别吗?
感谢。
答案 0 :(得分:-1)
我发现这篇文章讨论过它:here it is a overview comparison between Purist OOP and Anemic Domain Model 。
概述基本上解释了实现MVC设计模式的方式有两个很大的不同。
第一种方法是在模型相关的控制器类中集中方法,如本例中的聚合getter。
例如,在Android中,当我们在本地或远程数据库中持久化模型,或者我们必须对其进行序列化或对其进行编组时,我们倾向于创建这种类型的ModelController类并且具有贫血带有清洁POJO模型的MVC模式。
class User extends MySuperModel{
int id;
String username;
//getters and setters
}
class UserController{
User getUserById(int id);
int getUsersCount();
}
另一种方式,包括集中模型类本身的所有方法,例如在Laravel中(需要控制器主要控制视图的后路由和预渲染,但不是往往有其他方法,也不容易实例化。在这种情况下,我们有一个受控域 MVC,其他模型相关的方法应该在模型类本身。
class User extends Eloquent\Model{
protected $fillable = ['id', 'username']
function getUserById($id);
function getUsersCount();
}