关于 java 中的委派模式



我从委托模式中了解到的是,该类(ClassA)执行另一个类(ClassB)所做的事情。ClassA 还必须比 ClassB 做更多的事情(有更多的方法)。您可能只想简单地拥有 A 类子类 B。抵制这种诱惑,因为这是错误的做法。继承本质上是缓慢的,正确的设计涉及在 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(){…}
  }

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

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

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

最新更新