今天看了知乎的一个帖子,感觉顿时豁然开朗,贫血、充血貌似最初是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']);
我恍然大悟,上面两个模型我其实都用过了,目前工作中充血用的比较多,自己的项目贫血用的多