1

インターフェイスとラッパーを使用する理由を知っています。

しかし、私はラッパークラスに名前を付けるのを混乱させます...(「ラッパーは誰ですか?」私はよくわかりません...)

public Interface A {
    void method();
}

public Class B implements A {
    void method() {
        doSomething();
    }
}

私は2つのことに混乱しています...

  1. ラッパークラスはクラスであるため、Bはラッパーです。

  2. 私たちは通常、b.method()ではなくa.method()を見る(または考える?)ので、Aはラッパーです。

ラッパーとは何ですか?

A?B?

と...

「ラッパー」または「W」を使用してA、Bに適切な名前を付ける方法は?

A、AWrapper?またはB、BWrapper?または他の人...?

4

2 に答える 2

5

Aインターフェースです。 Bの具体的な実装ですInterface。あなたが提供したコードからは、それらについて他に何も言えません。

ラッパーは、ラップされたクラス/ APIの機能を追加または単純化することにより、別のクラスまたはAPIの機能を「ラップ」します。たとえば、JavaのプリミティブラッパーdoubleValueは、 Javaプリミティブのような便利なメソッドを追加compareToします。

あなたはポリモーフィズムについて考えています。

それが私たちが次のようなことを言うことを可能にするものです:

A a = new B();
B b = new B();
List<A> stuffs = new ArrayList<A>();
stuffs.add(b);

サイドノート:

InterfaceまたClass、Javaで大文字にすることは許可されていません。宣言は次のようになります。

public interface A {
  // methods
}

public class B implements A {
  // methods
}
于 2012-12-06T03:13:21.477 に答える
3

あなたの例のAもBもラッパーと呼ぶことはできません。AとBの関係はですInheritanceWrapperクラスは通常、contains1つ以上のオブジェクトWrappeeです。アダプターとファサードのパターンは、ラッパーの良い例です。

ラッパーの詳細については、こちらをご覧ください

于 2012-12-06T09:40:48.377 に答える