0

我从委托模式中了解到的是那个类 (ClassA) 做了另一个类 (ClassB) 所做的事情。ClassA 还必须比 ClassB 做更多的事情(有更多的方法)。您可能很想简单地让 ClassA 子类 ClassB。抵制这种诱惑,因为这是错误的做法。继承本来就很慢,正确的设计是在ClassA中定义一个ClassB类型的数据成员。通过这种方式,您消除了子类化的需要并降低了耦合强度

   //ClassA
 public class ClassA{

      private ClassB classB;

      //methods
      public void doThis(){classB.doThis();}
      public void doThat(){…}
  }

这是B类

    ClassB
  public class ClassB{
      public void doThis(){…}
  }

请指教是我的理解是正确的。

4

1 回答 1

1

您真的在问继承和组合之间有什么区别。这两种模式都有自己的用例。有效的 Java建议您应该在两个对象具有真正的“是”关系时使用继承。例如,矩形是一种形状。所以它可能应该扩展形状。然而,在某些情况下,人们误解了这个理论,并且在他们真正应该组成另一个对象时仍然扩展。优点当然是解耦和未来更好的设计。教科书示例HashMap在 java 中扩展。而不是扩展,一个人可以实现Map并且只拥有一个HashMap执行实际逻辑的组合。

我建议您阅读 Effective Java 并了解这两种模式的优势。

于 2012-05-05T17:06:36.377 回答