什么是贫血模型、充血模型

今天看了知乎的一个帖子,感觉顿时豁然开朗,贫血、充血貌似最初是java框架中发现的,下面说下我的理解.

我们做面向对象开发时,需要设计类如何构成,类由属性(变量、常量)和方法(行为)构成,方法其实是包含业务逻辑的,贫血模型不包含业务逻辑(可能只有geter、setter方法来获取属性),而充血模型既包含属性,又包含业务逻辑

拿帖子里的例子来书,如果我们设计一个用户的对象(User)

贫血模型:
需要两个类:
1、User 包含用户Id、用户名称的get、set
2、UserLogic 包含用户相关的操作,getUserInfo(), create(User), update(User) 等

使用的时候就这样: (new UserLogic())->create(new User(['name' => 'George']));

充血模型:
需要一个类:
1、User 包含用户相关的所有操作

使用的时候就这样: (new User())->create(['name' => 'George']);

我恍然大悟,上面两个模型我其实都用过了,目前工作中充血用的比较多,自己的项目贫血用的多

此条目发表在 扫盲 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>