组件与类详解

组件不是类,反之亦然。从概念上看,一个组件体现逻辑设计的一个子集,这些逻辑设计使组件作为一个独立的、内聚的单元存在是有意义的。类、函数、枚举等都是组成这些组件的逻辑实体。特别是,每个类定义都刚好只驻留在一个组件中。

在结构上,组件是一个不可分割的物理单元,没有哪一部分可以独立地用在其他的组件中,一个组件的物理形式是标准的,并且独立于它的内容。一个组件恰好由一个头文件和一个实现文件构成。

一个组件通常定义一个或多个密切相关的类并被认为适合所支持抽象的任何自由运算符,诸如Point,String和BigInt之类的基本类型,将会在一个包含单个类的组件中实现。诸如IntSet,Stack和List之类的容器类,通常将在(至少)包含原理类及其迭代器的组件中实现。包含像Graph那样多种类型的更复杂的抽象,可以在单个组件中具体化为许多类。最后,为整个子系统提供包装器的类可以构成一个薄的封装层,这个薄的封装层是由一个或多个原理类和许多迭代器组成的。

一个组件(而不是一个类)是合适的逻辑设计和物理设计的基本单位,这至少有三个理由:

  1. 一个组件常常把跨越许多逻辑实体(例如,类与自由运算符)的大量易管理的内聚功能打包到单一的物理单元。(一个.h与一个.c)
  2. 一个组件不仅作为单一的实体捕获整个抽象,而且允许考虑不通过类级别设计来解决物理问题。
  3. 一个适当设计的组件(作为一个物理实体不像类那样)可以作为单一的单位从系统中提出来,不必重写任何代码就可以在另一个系统中有效地重用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值