robbin四大模型

springclund+nginx+nacos+robbin+feign+sentinel+seata+gateway 本文主要是从零基础搭建一个spring cloud 微服务 第一节Nginx 按照搭建 第二季nacos集群搭建 第三节实战 使用robbin实现负载均衡 第四节foregin引入和使用 第五节解决分布式一致性问题seata 第六节引入网关 ... 阅读详情

模型包括:

1,失血模型

2,贫血模型

3,充血模型

4,胀血模型

一、失血模型:

失血模型简单来说,就是domain object只有属性的getter/setter方法的纯数据类,所有的业务逻辑完全由business object来完成(又称TransactionScript),这种模型下的domain object被Martin Fowler称之为“贫血的domain object”。


一个实体类叫做Item,指的是一个拍卖项目

一个DAO接口类叫做ItemDao

一个DAO接口实现类叫做ItemDaoHibernateImpl

一个业务逻辑类叫做ItemManager(或者叫做ItemService)

二.贫血模型:
就是domain ojbect包含了不依赖于持久化的领域逻辑,而那些依赖持久化的领域逻辑被分离到Service层。

Service(业务逻辑,事务封装) --> DAO ---> domain object

这也就是Martin Fowler指的rich domain object

一个带有业务逻辑的实体类,即domain object是Item

一个DAO接口ItemDao

一个DAO实现ItemDaoHibernateImpl

一个业务逻辑对象ItemManager



这种模型的优点:

1、各层单向依赖,结构清楚,易于实现和维护

2、设计简单易行,底层模型非常稳定

这种模型的缺点:

1、domain object的部分比较紧密依赖的持久化domain logic被分离到Service层,显得不够OO

2、Service层过于厚重



三、充血模型

充血模型和第二种模型差不多,所不同的就是如何划分业务逻辑,即认为,绝大多业务逻辑都应该被放在domain object里面(包括持久化逻辑)

,而Service层应该是很薄的一层,仅仅封装事务和少量逻辑,不和DAO层打交道。

Service(事务封装) ---> domain object <---> DAO

这种模型就是把第二种模型的domain object和business object合二为一了。所以ItemManager就不需要了,在这种模型下面,只有三个类,他们分别是:

Item:包含了实体类信息,也包含了所有的业务逻辑

ItemDao:持久化DAO接口类

ItemDaoHibernateImpl:DAO接口的实现类


这种模型的优点:

1、更加符合OO的原则

2、Service层很薄,只充当Facade的角色,不和DAO打交道。

这种模型的缺点:

1、DAO和domain object形成了双向依赖,复杂的双向依赖会导致很多潜在的问题。

2、如何划分Service层逻辑和domain层逻辑是非常含混的,在实际项目中,由于设计和开发人员的水平差异,可能导致整个结构的混乱无序。

3、考虑到Service层的事务封装特性,Service层必须对所有的domain object的逻辑提供相应的事务封装方法,其结果就是Service完全重定义


四、胀血模型

基于充血模型的第三个缺点,有同学提出,干脆取消Service层,只剩下domain object和DAO两层,在domain object的domain logic上面封装

事务。

domain object(事务封装,业务逻辑) <---> DAO

似乎ruby on rails就是这种模型,他甚至把domain object和DAO都合并了。

该模型优点:

1、简化了分层

2、也算符合OO

该模型缺点:

1、很多不是domain logic的service逻辑也被强行放入domain object ,引起了domain ojbect模型的不稳定

2、domain object暴露给web层过多的信息,可能引起意想不到的副作用。




范凯个人网站源码robbin_site.zip robbin_site 是范凯的个人网站 http://robbinfan.com 网站的源码。 标签:robbin 立即下载

相关推荐

MFC SDI制作Office2007样式的Robbin菜单.docx

MFC单文档程序 开发应用软件时修改界面的样式,仅供学习参考

Robbin负载均衡详解及实践---SpringCloud组件(三)

引入 spring-cloud-starter-openfeign 后,使用 Ribbon 是客户端负载均衡器 则无需引入额外依赖,因为引入的 spring-cloud-starter-openfeign 依赖中集成了 Ribbon。案例中,我们启动了一个feign-provider-modules,然后通过feign-consumer-8080调用feign接口来访问。进程内LB:将LB集成到消费方,消费方从服务注册中心获知哪些地址可用,然后自己再从可用地址中选择一个合适的服务器。

weixin_43811057的博客 1093

Ribbon控件

一个支持Ribbon界面开发的组件,挺好用的

服务间的负载均衡-Robbin

服务间的负载均衡robbin

yc_Cabbage的博客 554

用Java实现森林冰火人游戏

g.drawString("游戏结束", CELL_SIZE * COLS / 2 - 100, CELL_SIZE * ROWS / 2);g.drawString("难度级别: " + difficultyLevel, 10, CELL_SIZE * ROWS + 60);g.drawString("生命值: " + playerHealth, 10, CELL_SIZE * ROWS + 20);setTitle("森林冰火人");

2401_82778412的博客 1734

R语言实战:非正态数据下的Scheirer–Ray–Hare检验全流程解析

本文详细解析了在R语言中执行Scheirer–Ray–Hare检验的全流程。当实验数据不符合正态分布时,该非参数检验是分析两因素设计(包括主效应和交互效应)的有效工具。文章从原理、环境配置、数据导入、核心代码到结果解读与报告撰写,提供了完整的实战指南,并附有常见的避坑建议。

weixin_29061465的博客 397

MFC下使用Ribbon(我的第一个有Ribbon的程序!)

Google MFC Ribbon 找到一个Step By Step 的例子,翻译一下,也根据自己的经验总结一下。就算是个备忘吧。。。。。。 先说明一下本人使用的开发环境: 操作系统:Win7 旗舰 SP1 IDE:VS2010 旗舰 SP1(express 版本是没有MFC的哦) 附上源代码下载 1.建立MFC工程,如图: next到 选择一下风格我选如图: 其他都默认吧

giantchen 9141

一文学会Cadence Sigrity PDN仿真——硬件新手小白都能看懂的保姆级教程

电源完整性的仿真,实际上是在仿真以及优化系统中的等效串联电阻。知道了仿真以及优化的目标之后,接下来就是要弄明白这个串联电阻从哪儿来以及怎么优化。整个系统中的串联电阻实际上由三部分组成:没有相位的阻抗,有相位的容抗和感抗,得益于相位,在某个特定的频点,容抗和感抗会大小相等,相位相反而相互抵消,这时候整个系统中就剩下了阻抗,所以整个系统的串联电阻达到了一个最低值,这种现象就是----谐振。当系统处于谐振点时候,整个系统会有一个最小的串联电阻,所以第一个优化电阻的手段就是让谐振来的更频繁一点。

学习帮的博客 2万+

对Robbin《ruby on rails为什么暂时无法成为企业应用开发的主流?》的一些思考

对Rails开发方式我也在思考,对动态类型和meta programming已有的一些实践需要调整,也许需要引入一些新的做法。不得不说目前的大部分Rails项目都是少数几个人搞出来,即使那些访问量较大的成功站点不代表其代码量就大到需要很多人编程。所以对大规模的项目如何管理开发没有什么典型的例子。Getting Real涉及一些,不过更多是讲商业上的而不是软工上的实践。 动态语言不使用强制的i...

猪宝斋 169

三种方法教你下载大模型到本地,总有一种适合你

本文主要介绍了下载大模型到本地的三种解决方案,希望能对同学们有所帮助。 文章目录 1. 场景/问题描述 2. 方案一:使用git 3. 方案二:镜像站 4. 方案三:高速下载工具(变体及自定义代码) 4.1 aria2 4.2 自定义代码

weixin_43178406的博客 17万+

Spine骨骼动画查看器 - Skeleton Viewer

骨骼动画是现代游戏和动画制作中常用的技术之一。Spine骨骼动画查看器(Skeleton Viewer)是一个官方提供的工具,用于查看和调试Spine骨骼动画。本文将介绍Skeleton Viewer的功能和使用方法,并提供相应的源代码示例。通过Skeleton Viewer,开发者可以直观地查看和调试Spine骨骼动画,包括骨骼结构、动画播放和事件触发等。这有助于提高骨骼动画的质量和效果,并加速开发过程。以上代码演示了如何使用Skeleton Viewer查看和播放Spine骨骼动画。

HsvvDatabase的博客 3457

负载均衡实现方案(nginx与robbin)

负载均衡实现方案 压测工具jmeter ​ Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。使用jmeter主要是为了下文对ribbon和nginx各自最小连接数均衡策略的测试,最小连接数策略再低并发情况下,看不出分流效果 基于Ribbon的微服务调用负载均衡 Ribbon前言 ​ Sprin

weixin_42784244的博客 1082

使用pyqt5实现可勾选的测试用例界面

使用pyqt5实现可勾选的测试用例界面

天赐好车的博客 629

失血模型,贫血模型,充血模型,胀血模型

内容转自ROBBIN的 http://forum.javaeye.com 为了补大家的遗憾,在此总结下ROBBIN的领域模型的一些观点和大家的补充,在网站和演讲中,robbin将领域模型初步分为4大类: 1,失血模型 2,贫血模型 3,充血模型 4,胀血模型 那么让我们看看究竟有这些领域模型的具体内容,以及他们的优缺点: 一、失血模型 失血模型...

weixin_38166557的博客 97

从零打造高速 SerDes 系统:一步步教你生成 IBIS-AMI 模型!(含Simulink实操)

一个完整的 SerDes 系统,不止是电路设计,更是 SI 仿真、IBIS建模、系统验证三位一体的过程。用 MATLAB 的 SerDes Designer + Simulink 组合拳,不仅可以快速完成设计,还能无缝衔接工业标准流程,非常适合个人学习 & 企业验证。如果你还没用过,建议马上动手试一遍,毕竟:“光说不练假把式,跑出眼图才是王道!”🔥。

weixin_43199439的博客 1142

第4-4课:状态压缩与动态规划

什么是状态压缩 动态规划问题中重要的一环就是确定状态的定义,在大多数情况下,状态中所包含的信息并不多,比如线性规划问题的状态一般表示为 d[i,j](i 表示状态的位置,j 表示状态的阶段),算法实现时可用二维数组保存计算过程中的状态。但是也有一些问题,它的状态中包含的信息很多,比如它的状态可能是一个集合中各个元素的情况,或者是像铺瓷砖问题这样,是某一行的覆盖状态。如果沿用简单的状态表示方法,则可...

oRbIt 的专栏 700

ROBBIN的领域模型

为了补大家的遗憾,在此总结下ROBBIN的领域模型的一些观点和大家的补充,在网站和演讲中,robbin将领域模型初步分为4大类:1,失血模型2,贫血模型3,充血模型4,胀血模型那么让我们看看究竟有这些领域模型的具体内容,以及他们的优缺点: 一、失血模型 失血模型简单来说,就是domain object只有属性的getter/setter方法的纯数据类,所有的业务逻辑完全由business obje

piscailei@blog.youkuaiyun.com 1001

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ROBBIN谈领域模型

ROBBIN主页:http://www.blogjava.net/GandofYan/archive/2006/05/30/48954.html 为了补大家的遗憾,在此总结下ROBBIN的领域模型的一些观点和大家的补充,在网站和演讲中,robbin将领域模型初步分为4大类: 1,失血模型 2,贫血模型 3,充血模型 4,胀血模型 那么让我们看看究竟有这些领域模型的具体内容,以及他们

Dancen的专栏 2029

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Robbin负载均衡

Robbin是在Spring Cloud中的一个组件,是由Netfix发布的负载均衡器,有助于控制HTTP和TCP客户端的行为。它给我们提供了默认的轮询、随机等负载均衡算法。同时也可以由我们定义自己的算法。 由于Robbin已经被集成在Eureka里面,因此我们这个样例的代码都是在《微服务Eureka使用详解》的基础上进行。 参考博客:https://blog.youkuaiyun.com/u013089...

weixin_30810239的博客 157

SpringCloud全家桶(二):搞定 Robbin 和 Fegin

Robbin 提供的客户端软负载均衡,是SpringCloud微服务的重要特征之一,同时,Fegin 提供了Robbin软负载的声明式调用。 一、Robbin Robbin是springcloud的LB调用组件,提供客户端的软件负载均衡。Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等。使用@LoadBalanced 注解和 RestTemplate注入。 1、Rob...

编程者说的博客专栏 3699

robbin到此一游

打开Blog竟然发现今日访问者有赫赫的robbin头像在列,不知大神是被那篇闲文"骗"进来的 首先截图留念,再鞭策自己多学习多写有营养的博文以为谢。   ------------------------------------------------------------------------------- ...

从匠到艺 206

原来Robbin就是范凯啊

原来Robbin就是范凯啊! 这人贼精贼精滴......

qingjinshusheng的专栏 264

【巨人的肩膀】ROBBIN谈领域模型

分类 为了补大家的遗憾,在此总结下 robbin 的领域模型的一些观点和大家的补充,在网站和演讲中,robbin 将领域模型初步分为 4 大类: 失血模型 贫血模型 充血模型 胀血模型 那么让我们看看究竟有这些领域模型的具体内容,以及他们的优缺点 失血模型 失血模型简单来说,就是 domain object 是只有属性和属性的 getter/setter 方法的纯数据类,所有的业务逻辑完全由 business object 来完成(又称TransactionScript),这种模型下的 domain o

lbh_paopao的博客 258

springcloud之Robbin设计原理(转载)

springcloud之Robbin设计原理

weixin_45923962的博客 327

通过robbin的管理问题谈自己遇到的管理问题

首先澄清每个公司,每个管理团队都有着不同的背景和状况。很多事情都不能一概而论,就和我们做设计一样,一个行为放到一个场景下可能是对的,当它换一个场景可能就不正确了。我感觉管理也是相同的道理。 最近看到robbin谈“改造团队的经验”很受启发,也很欣赏他的管理才能和技术才能,不过他提出的经验可能非常适合他的管理团队,但不一定适用于所有管理团队。写这篇文章只想说说我遇到的管理问题,也同样不适用与所有管

米饭超人的专栏 1619
上一篇: 用百度地图api计算两个地方的距离
下一篇: HQL常用语句
JackRenEngineer
博客等级 码龄10年 37粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值