原文如下:
    组合带来了极大的灵活性。新类的成员对象通常都被声明为private,使得使用新类的客户端程序员不能访问它们。这也使得你可以在不干扰现有客户端代码的情况下,修改这些成员。也可以在运行时修改这些成员对象。以实现动态修改程序的行为。下面将要讨论的继承并不具备这样得灵活性,因为编译器必须对通过继承而创建的类施加编译时的限制。
红字部分不明白,用多态的话继承不是也可以在不干扰现有客户端的情况下修改代码吗,接口不变就可以了。用
聚合的话不是也可以动态西欧改吗?   求大神举例子,看不明白哇。Java

解决方案 »

  1.   

    估计是:
    class A{
      private B b;
      public void fun(){
       //使用b完成某功能
     }
    }业务变更你就可以修改B和fun(),而不用修改别人调用你的那部分代码。
    这是“这也使得你可以在不干扰现有客户端代码的情况下,修改这些成员”
      

  2.   

    "也可以在运行时修改这些成员对象"
    例如:
    private B b;func(){
      case one:
         b=BFactory.getInstance(One.class);
         break;
      case two:
        b=BFactory.getInstance(Two.class);
        break;}不知道这样理解对不对恩