概述
组件是物理设计中的最小单位。
它主要的想法是把一定数量的内聚功能组织在一个物理的单元中,以达到轻松部署,轻松复用的目的。
物理组件可能会包含一个或多个逻辑组件,也有可能会跨越多个类。但这些逻辑组件或类一定是在功能上内聚的。
图中DrawShap.dll 为一个组件,它的内部其实包含了多个类。
关于组件的定义
规则 1: 一个组件中声明的任何逻辑结构,如果定义了,则应该全部定义在该组件内部。
图中为一个不妥当的做法:Class A 的实现分别放在了A.cpp和Main.cpp中,如果想要把A独立出来作为一个单独的组件对外提供服务的话,Main.cpp也会受到影响。
规则 2:每个组件的 .c/.cpp文件都应该将include 自己 .h文件的有效语句作为第一行。
这个规则看似是一种形式上的要求,它的主要目的是检查当前代码中是不是有外部的声明或定义,或者声明中是否有遗漏,从而保证组件的相对的独立性。如果仅仅改变一行代码的位置就可以让系统替我们进行检查,简单高效,何乐而不为了。
规则 3:在一个组件的 .c文件中,避免使用有外部连接并且没有在相应的.h文件中明确声明的定义。
辅以图示,一个不好的例子