关于java中的委托模式

时间:2012-05-05 16:52:16

标签: java

我从委托模式中掌握的是类(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(){…}
  }

请告知我的理解是正确的。

1 个答案:

答案 0 :(得分:1)

你真的在问inheritance and composition之间有什么区别。这两种模式都有自己的用例。 Effective Java建议您在两个对象具有真正的'is a'关系时使用继承。例如,矩形是一种形状。所以它应该延伸形状。然而,有些人误解了这个理论,并且在他们应该真正构成另一个对象的时候仍然延伸。优点当然是解耦和更好的设计。教科书示例在java中扩展HashMap。可以实现Map而不是扩展,只需要具有实际逻辑的组合HashMap

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