`
tianzizhi
  • 浏览: 15072 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

关于开发中的贫血模型和充血模型的个人看法

阅读更多
看了一些这方面的文章,自己总结一下自己的想法,加深自己的一点理解

我把开发中的几个层比喻成现实中的公司管理层,这样好理解些

最上层老板(action),中层管理者(manager),基层执行者(object),底层跑腿业务员(dao)
现在大家关注的最重要的两个 中层管理者,基层执行者,这两个的职责比重怎么分,什么样的活分给管理者,什么样的活分给基层工作者,
什么时候权力下放,什么时候权力提升

有四模型和二模型之分

四模型时
1,失血模型 action manager object dao  object没有自己的行为方法,只是一个听话的老实人,没有任何主见,一切受命于manager,manager来管理你的一切行为,上厕所也不例外, 愤怒中。。。。。。。。。。。。。凭什么啥都管我

2,贫血模型 action manager object dao  object仅有管理自身状态的行为方法,这回上厕所的权力交给你了,还有其它的只与你个人有关的其它行为,剩下的受命于manager,你手上没有可以管理的人 ,安于现状中。。。。。。。。。。。感觉还可接受

3,充血模型 action manager object dao  object仅有管理自身自身状态的行为方法和管理一些与自己工作相关的业务员的简单命令,其它的受命于manager,有点人情味了,终于可以使唤其它人了,感动中。。。。感觉良好

4,胀血模型 action manager object dao  object管理与自己相关的所有行为方法,可以忽略manager的存在,我是老大,甚至踢走上司,激动中。。。。。。。这个在上层的感觉就是不一样

两模型时
1 贫血模型 action manager object dao  就是四模型中的第1个
2 充血模型 action manager object dao  就是四模型中的第2个或第3个

对于如何划分两人的职责呢,有以下几个方面可以参考
manager和object较好的分配原则:

1 manager要做的事涉及到一个重要的公司形为,这个概念不属性任何一个object,object一个人应付不来,manager可以要喊一帮子人来协调来干
2 manager要做的事涉及到其它部门的老大
3 manager要做的事没有个人因素,不能受个人因素的影响,例如情感,小三之类的,总之没有状态变化,不受人控制,做事六亲不认

除了上面三条的事,其它的事都应该尽量权力下放,让手下人object去干

以上纯属个人理解,有不同意见的同学可以尽管喷
分享到:
评论

相关推荐

    对贫血和充血模型的理解

    总之,贫血模型和充血模型各有其优势和不足,它们是软件开发中处理业务逻辑和数据关系的两种重要策略。开发者在掌握它们的同时,也要根据项目实际需求灵活应用,选择最合适的方案,以提高代码质量,降低维护成本,并...

    失血贫血充血胀血模型.docx

    贫血模型可以看作是失血模型的一种变体,也是将数据模型和业务逻辑分离,但领域对象可能会包含一些基本的数据验证逻辑。与失血模型相比,贫血模型的领域对象稍有"血色",但仍然缺乏复杂的行为。 优点: 1. 简单明了...

    浅谈Asp.net中使用“充血模型”1

    在Asp.net开发中,"充血模型"是一种提倡领域对象拥有丰富行为和业务逻辑的设计模式,相对应于传统的"贫血模型"。"贫血模型"通常将数据模型、业务逻辑和数据访问分离,使得领域对象仅包含属性,而业务逻辑和数据操作...

    11丨实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?1

    3. 维护性:在大型项目中,通过分离关注点,贫血模型有助于团队协作和模块化开发。 然而,随着业务复杂性的增加,贫血模型的局限性也开始显现,如代码冗余、职责不清等。在以下情况下,我们可能会考虑使用充血模型...

    充血模型设想实现(2010/07/30更新)

    在软件开发中,领域模型是对业务领域的抽象和建模,它包含业务规则、逻辑和状态。充血模型强调对象应该拥有自己的行为和状态,而不是简单地作为数据容器。这个模型与贫血模型相对,后者通常由无行为的POJO(Plain ...

    领域模型说明及范例代码.zip

    本资料包中的“贫血模型or领域模型.doc”文档应该提供了关于这两种模型的详细解释和对比,建议先阅读文档以获取理论基础。然后,解压“代码.zip”文件,其中包含的Java代码范例可以让你亲手实践,理解这两种模型在...

    基于GO的六边形架构框架,可支撑充血的领域模型范式代码实现.rar

    在传统的贫血模型中,领域对象通常只包含数据,而业务逻辑则分散在服务层或其他地方。然而,在充血模型中,领域对象不仅包含了数据,还封装了大量的业务逻辑。这种方法使得领域模型更加生动且有力量,因为它们可以...

    领域模型驱动设计1553265830.pdf

    领域模型分为贫血模型和充血模型两种。 - 贫血模型指的是领域对象只包含了数据访问方法(get和set方法)和一些简单的CRUD(创建、读取、更新、删除)方法,而所有的业务逻辑都放在了BusinessLogic层。 - 充血模型则...

    领域驱动设计案例-盒马实践

    领域模型可以分为失血模型、贫血模型和充血模型三种类型。 失血模型 失血模型是基于数据库的领域设计方式,它指的是使用 POJO 数据对象来存储业务数据。在失血模型中,业务逻辑是分散的,分布在多个地方。 贫血...

    基于六边形架构的充血领域模型设计源码——Freedom框架

    该项目为Freedom框架,是一款基于六边形架构的充血领域模型设计源码,采用Go语言开发,总计包含200个文件。文件类型涵盖了178个Go源文件、6个Markdown文档、4个TOML配置、4个YAML配置、2个SQL脚本、1个Git忽略规则、...

    领域驱动(DDD)充血模式下,domain 与 Service以及Repository的解耦---DOMAIN EVENT

    在软件开发领域,尤其是企业级应用中,领域驱动设计(Domain-Driven Design,简称DDD)是一种重要的设计思想。本文将详细探讨DDD中的“充血模式”(Bounded Contexts with Rich Domain Models),以及如何通过引入...

    软件架构技术公司内部交流

    架构设计过程中,还会讨论不同的模型类型,如贫血模型、充血模型(领域驱动模型)和胀血模型。贫血模型中,业务逻辑主要集中在Service层,而DO(Data Object)仅包含数据;充血模型则将业务逻辑放在DO中,Service层...

    tbl-demo-service-master.zip

    如果领域模型只是用来处理简单的逻辑(比如贫血模型),那么领域模型的作用微乎其微,甚至可以忽略,数据转换的成本比领域模型带来的好处还多,这种情况其实就是在原有的分层架构中多加了一层,增加了项目的复杂性和...

    阿里巴巴内部团队Java开发手册规范

    3. **代码结构**:手册推荐采用模块化、分层设计,如贫血模型(贫血模型:业务逻辑集中在Service层,DAO层只负责数据存取)和充血模型(充血模型:业务逻辑分散在实体类中)。 4. **异常处理**:异常处理是程序稳定...

    阿里巴巴java开发规范手册1.5.0.zip

    6. **代码组织**:提倡模块化和分层设计,如贫血模型和充血模型的选择,以及MVC、三层架构等设计。强调接口的定义应清晰,实现应简洁,避免过度封装。 7. **日志记录**:推荐使用合适的日志级别,如DEBUG、INFO、...

    DDD领域驱动设计day02.pdf

    领域驱动设计中的领域模型包括充血模型和贫血模型两种不同的建模方式。贫血模型主要存在于传统分层架构中,其特点是实体类中几乎没有业务逻辑,主要通过getter和setter方法来访问属性。这种模式下,业务逻辑分散在...

    大白话领域驱动设计DDD视频教程

    体会下充血模型开发微信钱包系统 聚合和聚合根是什么? 领域事件是什么? 看看领域事件的本质(解耦,异步,削峰) 工厂和资源库的作用? 领域服务是什么? 通过用例分析法和领域事件梳理电商购物车核心流程 第4章 DDD...

    基于领域分析设计的架构规范.docx

    总结来说,基于领域分析设计的架构规范着重于如何通过读写隔离优化查询操作,利用状态图揭示核心业务逻辑,并通过对比贫血模型和充血模型,强调了业务逻辑应与数据结构紧密结合,以提升软件设计的质量和效率。...

    论文研究 - 慢性主动脉瓣狭窄引起的全身炎症反应综合征和充血性心力衰竭的症状严重程度及其药理学纠正

    全身性炎症反应综合征(SIRS)是伴发状态之一,可加重充血性心力衰竭(CHF)的严重程度并使难治性CHF转向常规治疗。 我们调查了SIRS症状和体征的停止是否会阻止兔慢性主动脉瓣狭窄引起的CHF进展。 冠状动脉左降支...

Global site tag (gtag.js) - Google Analytics