GRASPパターン - Indirectionパターン(間接化パターン)AdvertisementIndirectionパターンの提唱するもの
あるクラス同士を直接結びつけるのではなく、橋渡しを行うクラスを間に挟むことによって、クラス同士の結合度を緩やかにするパターン。
考察
様々なクラスから、あるクラスへメッセージパッシングを行うような設計をする際に、直接メッセージを送らずに、クラスを定義して間に挟む。そのクラスを通して実際にメッセージを送信したいクラスへメッセージを送る。
メッセージ送信先クラスの仕様が変更になっても、そのクラスに直接メッセージを送っているクラスはひとつだけなので、容易に変更を行うことが出来る。 メリット
ものすごく単純な例
単純なクラスを定義する
public class Sample{
public static void main(Strimg[] args){
String msg = new String("メッセージ");
System.out.println(msg)
}
}
public class Test{
public static void main(Strimg[] args){
String msg = new String("メッセージ");
System.out.println(msg)
}
}
![]() 図1:クラス同士の関連図 他にも似たようなクラスが散在しているとして、ここで各クラスのメッセージ出力を、現行の標準出力ではなくファイル出力へと変更する必要が出てきたとする。その際、上記の例のような設計になっていると、複数箇所を変更しなくてはならなくなる。 間接化パターンに基づいた設計を行うと、以下のようになる。
public class Sample{
public static void main(Strimg[] args){
MessageOut msgout = new MessageOut();
String msg = new String("メッセージ");
msgout.out(msg)
}
}
public class Test{
public static void main(Strimg[] args){
MessageOut msgout = new MessageOut();
String msg = new String("メッセージ");
msgout.out(msg)
}
}
public class MessageOut{
public void out(String msg){
System.out.println(msg);
}
}
![]() 図2:クラス同士の関連図 このように設計しておけば、上記のように標準出力からファイル出力に変更するような場合でも間接オブジェクトと出力を行うオブジェクトだけ修正すればよい。 Advertisement |
ショートカット・634・634ブログ ・このカテゴリのトップページに戻る ・Incubator(Pukiwiki) ・634ラボ UIコレクションギャラリー ZO-3ジェネレーター サイト検索Y!ログール |