如题,这两种关系从业务逻辑上的分别比较容易理解,我想知道的是从代码层面上可以表现出两者的区别吗?请代码示例请各位不吝赐教,十分感谢!

解决方案 »

  1.   

    代码就不写了,简单举例下
    uses-a强调是一种引用关系,比如常见的UserManager引用了一个UserDAO来进行用户登录验证has-a,组合(或者按《设计模式》里面的说法叫聚合),强调是一个局部和整体的关系,比如一辆car由引擎、四轮、底盘、电子设备等组合而成。
      

  2.   

    依赖class B extend A{}聚合class B{
        A a;
        ... ...
    }
      

  3.   

    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;
          .....
       }
    }
      

  4.   

    这两个从代码上理解是不太容易的, java编程思想里的is a 和is like a也是做了java很长一段时间才理解的.楼主不用急代码写多了代码看多了,自然就会理解.
    不过记住能用合成尽量用合成(虽然不如继承用得顺手在刚开始的时候),继承只是在合成实在不好用的情况下才用(一般用实现接口).