0

委任パターンから把握したのは、別のクラス (ClassB) が行うことを行うクラス (ClassA) です。また、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は、2 つのオブジェクトが真の「is a」関係にある場合に継承を使用することを推奨しています。たとえば、長方形は形です。したがって、おそらく形状を拡張する必要があります。しかし、人々がこの理論を誤解し、実際には別のオブジェクトを構成する必要があるときに拡張する場合があります。利点はもちろん、デカップリングと将来のより良い設計です。教科書の例はHashMapJavaで拡張されています。extends の代わりに、実装して、実際のロジックを実行Mapする Composed を持つことができます。HashMap

効果的な Java を読んで、両方のパターンの利点を理解することをお勧めします。

于 2012-05-05T17:06:36.377 に答える