依赖,关联,聚合,组合

前端之家收集整理的这篇文章主要介绍了依赖,关联,聚合,组合前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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的类关系相对来说更精确一些. 欢迎大家讨论.

猜你在找的设计模式相关文章