
292
導
入
編
1
設
計
編
ア
キ
テ
ク
チ
ャ
編
2
3
4
5
6
7
6
AudioOutputFactoryクラスがシングルトンになることで、Tuner クラス
も変更されます。
public class Tuner {
private AudioOutput audioOutput;
public Tuner() {
AudioOutputFactory factory =
AudioOutputFactory.getInstance();
// AudioOutputFactoryに委譲
this.audioOutput = factory.create();
}
public void sound(AudioOutputStream
audioOutputStream) {
this.audioOutput.sound(audioOutputStream);
}
}
TunerクラスはAudioOutputFactoryクラスに依存しているので、Audio
OutputFactoryクラスの変更がTunerクラスに影響するのは当たり前かも
しれません。しかし、Tunerクラスにしてみれば、ほしいのは AudioOutput
クラスのインスタンスだけです。それであれば、 のクラス図のよう
に、ファクトリクラスとTunerクラスの依存関係を逆にすることもできま
す。Tunerクラスには setAudioOutput メソッドがあり、ファクトリクラス
からAudioOutputインターフェイスを実装したインスタンスを渡してもら ...