オブジェクト設計&デザパタ
■ このスレッドは過去ログ倉庫に格納されています
0796デフォルトの名無しさん
2011/12/06(火) 08:05:55.14ここで、Timerクラスを利用したい開発者がいて、その開発者はactionPerformedというメソッドでTimerをstartしたいとする。
この場合、TimerAdapterというAdapterを作成することで、既存クラス(Timer)クラスを修正することなく、 異なるインタフェースを持たせることができる。
このように、既存クラスを修正することなく、異なるインタフェースを持たせるということが、Adapterパターンの役割である。
class Timer {
public void start();
}
class TimerAdapter extends Timer implements ActionListener {
public void actionPerformed(ActionEvent e) {
super.start();
}
}
イベントリスナにTimerAdapterという名前を付けることに違和感を感じるだろ?
その違和感こそイベントリスナがAdapterではない証拠。
イベントリスナを使うときに「意図」しているものはAdapterではない。
Timer#start()をActionListener#actionPerformed(ActionEvent e)という名前で使いたいから
リスナを作っているのか?明らかに違うだろ。
デザインパターンは、目的をもって使うもの。
クラス図が偶然に同じ形をしていたからといって、そのパターンを使っているとはいわない。
■ このスレッドは過去ログ倉庫に格納されています