条款38:通过复合塑模出has-a 关系或 is-impemented-in-terms-of关系

1、什么是复合?

复合是类型之间的一种关系,当某种类型的对象包含其它类型对象时,便是这种关系。

2、复合描述的关系的细分

(1)复合意味着两种关系
  • has-a 关系
  • is-impemented-in-terms-of关系
(2)细分依据

区分这两种关系的依据:根据程序处理的不同领域。

(3)应用域和实现域
  • 应用域:客观的,描述现实世界的东西的类。(比如:一辆汽车,一条狗)。应用域类型之间的复合,描述的是has-a关系。
  • 实现域:人造的,描述实现细节的东西的类。(比如:缓冲区、互斥器、查找树)。实现域之间的复合,描述的是is-impemented-in-terms-of关系。

3、在设计类时区分is-ahas-ais-impemented-in-terms-of的关系。

(1)is-ahas-a 关系
  • is-ahas-a关系比较容易区分。
(2)is-ais-impemented-in-terms-of关系的区分
  • 在设计类时,是设计成is-a关系,还是设计成is-impemented-in-terms-of关系,要搞清楚类基类的行为是否完全适用于派生类,如果是,那么两个类之间就是is-a关系,即public继承。
  • 如果基类的行为并不完全适用于派生类,那么,可能就要考虑is-impemented-in-terms-of关系,即复合关系。让需要的实现类,包含一个已经实现的类对象,这个对象帮助实现需要的实现类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值