♀ 双向关联(Association)
CAssociation1和CAssociation2可以互相调用对方的公共成员函数和成员变量。代码触析:class CAssociation1 { private: CAssociation2* m_pAssociation2; }; class CAssociation2 { private: CAssociation1* m_pAssociation1; };
♀ 单向关联(DirectedAssociation)
CDirectedAssociation1可以调用CDirectedAssociation2的公共成员函数和成员变量。代码触析:class CDirectedAssociation1 { private: CDirectedAssociation2* m_pDirectedAssociation2; }; class CDirectedAssociation2 { };
♀ 自身关联(DirectedAssociation)
CSelfDirectedAssociation { private: CSelfDirectedAssociation* m_pSelf; };
♀ 聚合(Aggregation)
CAggrergator是聚合者,CAggregated是被聚合者。 被聚合者可以离开聚合者而独立存在,比如CDialog聚合CDialog,代码解析:class CAggregator { private: CAggregated m_aggregated; }; class CAggregated { };
♀ 组合(Composition)
CCombination是组合者,CCombined是被组合者。 被组合者不能离开组合者而独立存在,比如行组合单元格。代码解析:class Combination { private: CCombined m_combined; }; class CCombined { };
♀ 依赖(Dependency)
CDependent中功能的实现会用到CDepended中的功能。比如CDialog可以用CFileDialog完成文件保存功能。代码解析:class CDependent { }; class CDepended { };♂ 关联、聚合和组合、依赖的区别
♀ 泛化-继承(Generalization)
CChild继承了CParent,代码解析:class CParent { }; class CChild: public CParent { };
♀ 模板
代码解析:template<typename T> class CTemplate { };