1

この例は非常に不自然なので、ご容赦ください。

私は 2 つの Java クラス と を持っていますChairDesk、これらはサードパーティからのものです (つまり、変更できません)。

public class Chair {
  //...
}

public class Desk {
  //...
}

これらのクラスごとにdoWork()、 に依存するメソッド を実行する必要がありますDatabaseServiceOfficeFurniture私のアプローチは、各クラスのインターフェースを実装するアダプターを作成することです。

public class ChairAdapter implements OfficeFurniture {
  //...
}

public class DeskAdapter implements OfficeFurniture {
  //...
}

public interface OfficeFurniture {
  public doWork(DatabaseService databaseService);
}

最後に、質問:呼び出しに渡す方が良いですか、それともコンストラクターに渡してDatabaseServiceクラスフィールドにインスタンスを格納する方が良いですか? または、別のより良いアプローチがありますか?doWork()ChairAdapterDeskAdapter

4

2 に答える 2

2

それは、アダプターのクライアントがデータベース サービスについて何か知っている必要があるかどうかによって異なります。おそらくそうではないので、コンストラクターに入れます。クライアントがデータベース サービスについて何かを知る必要がある場合は、それを渡す方が適切です。

于 2012-06-01T23:46:54.183 に答える
1

DatabaseServiceクラスがシングルトンであるか、クラスごとに 1 回だけインスタンス化する必要がある場合はAdapter、コンストラクターに渡します。Adapter特に、インスタンスを使用する各クラスに複数のメソッドがあるDatabaseService場合。呼び出し間で変更される場合は、メソッドに渡します。

于 2012-06-01T23:45:23.600 に答える