JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > デザインパターン > Mediatorパターン  
メニュー
Home
情報交換掲示板
Factory Method
Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain Of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
  2003/07/25  田中宏和
Mediatorパターン
◆概要
オブジェクト群がどのように相互作用するかをカプセル化するオブジェクトを定義する。 Mediatorパターンはオブジェクト同士がお互いを明示的に参照し合うことがないようにして、結合度を低めることを促進する。それにより、オブジェクトの相互作用を独立に変えることができるようにする
◆UML
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01
◆概念的なソースコード
Mediator.java(ここからダウンロード)
abstract class Mediator {
  abstract public void send(String name , Colleague colleague);
}
ConcreteMediator.java(ここからダウンロード)
public class ConcreteMediator extends Mediator {
  ConcreteColleague1 colleague1;
  ConcreteColleague2 colleague2;

  public void setConcreteColleague1(ConcreteColleague1 colleague1) {
    this.colleague1 = colleague1;
  }
  public void setConcreteColleague2(ConcreteColleague2 colleague2) {
    this.colleague2 = colleague2;
  }
  public void send(String message,Colleague colleague) {
    if (colleague==colleague1) {
      colleague2.notify(message);
    } else if (colleague==colleague2) {
      colleague1.notify(message);
    }
  }
}
Colleague.java(ここからダウンロード)
abstract class Colleague {
  protected Mediator mediator;

  public Colleague(Mediator mediator) {
    this.mediator = mediator;
  }
}
ConcreteColleague1.java(ここからダウンロード)
public class ConcreteColleague1 extends Colleague{
  public ConcreteColleague1(Mediator mediator) {
    super(mediator);
  }

  public void send(String message) {
    mediator.send(message, this);
  }

  public void notify(String message) {
    System.out.println("ConcreteColleague1は" + message + "を受け取りました");
  }
}
ConcreteColleague2.java(ここからダウンロード)
public class ConcreteColleague2 extends Colleague{
  public ConcreteColleague2(Mediator mediator) {
    super(mediator);
  }

  public void send(String message) {
    mediator.send(message, this);
  }

  public void notify(String message) {
    System.out.println("ConcreteColleague2は" + message + "を受け取りました");
  }
}
Client.java(ここからダウンロード)
public class Client {
  public static void main(String[] args) {
    ConcreteMediator mediator = new ConcreteMediator();
    ConcreteColleague1 colleague1 = new ConcreteColleague1(mediator);
    ConcreteColleague2 colleague2 = new ConcreteColleague2(mediator);

    mediator.setConcreteColleague1(colleague1);
    mediator.setConcreteColleague2(colleague2);

    colleague1.send("Hello World");
    colleague2.send("こんにちわ 世界");
  }
}
 
◆実行
コマンドプロンプト
C:\JavaHello\Mediator>javac *.java

C:\JavaHello\Mediator>java Client
ConcreteColleague2はHello Worldを受け取りました
ConcreteColleague1はこんにちわ 世界を受け取りました

C:\JavaHello\Mediator>

おおおお!実行できましたね!

 
 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME