依赖,关联,聚合,组合

1.实例化(依赖) A将B作为局部变量进行使用. 程序1 void A::foo() { B b; b.someMethod(); } 2.关联 A与B存在一定的关系. 这里只考虑单向导航. 关联在代码中有多种表现形式. 第一种,作为参数: 程序2 void A::foo(B& b) // (B* b) or (B b) { b.someMethod(); } 第二种,作为成员变量: 程序3 class A { public: A(B& b) { b_ = b; } void foo() { b_.someMethod(); } private: B& b_; // B* b_ }; 3.聚合 聚合是一种特殊的关联,聚合更明确指出聚合的主体具有整体-部分关系. 代码的表现形式见程序3. 4.组合 组合是一种特殊的聚合,组合中的某个主体控制着另外一个主体的生命周期,而且他们还存在整体-部分关系. 程序4 class A { public: A() { b_ = new B; } ~A() { delete b_; b_ = NULL; } void foo() { b_->SomeMethod(); } private: B* b_; }; 一直以来总觉得OMT的类关系更合理一些; 查资料和实际应用之后,发现UML的类关系相对来说更精确一些. 欢迎大家讨论.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...