xiao7cn(o(∩_∩)o... 哈哈!兄的"依赖"其实是泛化.1. 聚合分聚集和组合: Class A; class B;class C { private A a;//该成员不能为空(NULL/null),则为组合 private B b;//该成员可以为空(NULL/null),则为聚集 }上述内容中, A,B的实例 1:1 地聚合于 C.2. 依赖 class D { // D 与 A, B, C 没有聚集,泛化关系 //下面这个成员函数充分说明 D 和 A/B/C 的依赖关系: ABC 既不是 D 的泛化和具化,也不是D的任何成员,但 D 用到了它们 A textFunction( B b) { C = new C; ..... } }
这两个从代码上理解是不太容易的, java编程思想里的is a 和is like a也是做了java很长一段时间才理解的.楼主不用急代码写多了代码看多了,自然就会理解. 不过记住能用合成尽量用合成(虽然不如继承用得顺手在刚开始的时候),继承只是在合成实在不好用的情况下才用(一般用实现接口).
uses-a强调是一种引用关系,比如常见的UserManager引用了一个UserDAO来进行用户登录验证has-a,组合(或者按《设计模式》里面的说法叫聚合),强调是一个局部和整体的关系,比如一辆car由引擎、四轮、底盘、电子设备等组合而成。
A a;
... ...
}
Class A;
class B;class C
{
private A a;//该成员不能为空(NULL/null),则为组合
private B b;//该成员可以为空(NULL/null),则为聚集
}上述内容中, A,B的实例 1:1 地聚合于 C.2. 依赖
class D
{
// D 与 A, B, C 没有聚集,泛化关系 //下面这个成员函数充分说明 D 和 A/B/C 的依赖关系: ABC 既不是 D 的泛化和具化,也不是D的任何成员,但 D 用到了它们
A textFunction( B b)
{
C = new C;
.....
}
}
不过记住能用合成尽量用合成(虽然不如继承用得顺手在刚开始的时候),继承只是在合成实在不好用的情况下才用(一般用实现接口).