http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4315|回复: 5

[学习心得] C#合成/ 聚合复用原则(CARP)

[复制链接]
发表于 2018-12-21 14:08:54 | 显示全部楼层 |阅读模式
本帖最后由 惜 于 2018-12-21 14:08 编辑


五 、  合成/ 聚合复用原则 (CARP )
合成/聚合复用原则(Composite/Aggregate Reuse Principle 或 CARP)经常又叫做合成复用原则
(Composite Reuse Principle 或 CRP),就是在一个新的对象里面使用一些已有的对象,使之成为新对象的
一部分;新对象通过向这些对象的委派达到复用已有功能的目的。
简而言之,要尽量使用合成/聚合,尽量不要使用继承。

o Design to interfaces.

o Favor composition over inheritance.

o Find what varies and encapsulate it.(摘自:Design Patterns Explained)

区分"Has-A"与"Is-A"
"Is-A"是严格的分类学意义上定义,意思是一个类是另一个类的"一种"。而"Has-A"则不同,它表示某一个角色
具有某一项责任。

导致错误的使用继承而不是合成/聚合的一个常见的原因是错误的把"Has-A"当作"Is-A"。例如:

1.png

实际上,雇员、经理、学生描述的是一种角色,比如一个人是"经理"必然是"雇员",另外一个人可能是"学生雇

员",在上面的设计中,一个人无法同时拥有多个角色,是"雇员"就不能再是"学生"了,这显然是不合理的。

错误源于把"角色"的等级结构与"人"的等级结构混淆起来,误把"Has-A"当作"Is-A"。解决办法:


2.png
延伸阅读:来自阿里云
IS-A、HAS-A和USE-A都是用来表示类与类之间的关系的,其中IS-A表示继承,HAS-A表示组合,USE-A表示依赖。

IS-A表示类与类之间的继承关系,在iOS中,你要实现一个控制器,通常是继承与UIViewController的,你自己的控制器和UIViewController之间的关系就是IS-A系。

HAS-A表示组合关系,是整体和部分之间的关系,同时整体必须负责销毁部分,你的控制器里有很多View,控制器与View之间的关系就是HAS-A关系。USE-A表示依

IS-A、HAS-A和USE-A都是用来表示类与类之间的关系的,其中IS-A表示继承,HAS-A表示组合,USE-A表示依赖。

IS-A表示类与类之间的继承关系,在iOS中,你要实现一个控制器,通常是继承与UIViewController的,你自己的控制器和UIViewController之间的关系就是IS-A关系。

HAS-A表示组合关系,是整体和部分之间的关系,同时 整体必须负责销毁部分,你的控制器里有很多View,控制器与View之间的关系就是HAS-A关系。

USE-A表示依赖关系,是类与类之间的连接,依然是其中一个拥有另外一个,但是却 不负责销毁它我个人认为代理模式应该就属于USE-A关系







1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2018-12-21 14:12:29 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-21 15:03:10 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-21 15:27:20 | 显示全部楼层
感恩无私的分享与奉献
发表于 2018-12-21 17:01:02 | 显示全部楼层
无回帖,不论坛,这才是人道。
发表于 2018-12-25 09:41:14 | 显示全部楼层
激动人心,无法言表!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-6-23 05:30

© 2014-2021

快速回复 返回顶部 返回列表