Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú Mediatorģʽ

Mediatorģʽ

ժҪ: Mediatorģʽ
ÄÚÈÝ: Mediatorģʽ¿´µÄÓÐЩ¿ì£¬»ù±¾¸ÅÄîºÍÒâ˼¸ãÃ÷°×ÁË¡£½áºÏʵ¼Ê¾­ÑéÒÔÇ°»¹Ã»ÓÐÅöµ½¹ýÊʺÏÓÃMediatorģʽµÄ³¡¾°¡£ÒÔºóÒ²¾¡Á¿±ÜÃâ¶àÀà¶à¶ÔÏóÖ®¼äµÄÏ໥²Ù×÷¡£

OOD¹ÄÀø½±ÐÐΪ·â×°µ½¸÷¸ö¶ÔÏóÖУ¬Ò²¾ÍÊǽ«±ä»¯µã·â×°¡£µ«ÊÇÓÐʱºòÕâÖÖ·â×°¿ÉÄܻᵼÖ¶ÔÏó¼äÓÐÐí¶àÁ¬½Ó¡£¼«¶ËÇé¿öÏ£¬Ã¿¸ö¶ÔÏó¶¼ÖªµÀÆäËûËùÓжÔÏ󡣸÷¸ö¶ÔÏóÖ®¼äµÄ½»»¥±È½Ï¶à£¬Ã¿¸ö¶ÔÏóµÄÐÐΪ²Ù×÷¶¼ÒÀÀµÆäËû¶ÔÏó¡£ÐÞ¸ÄÒ»¸ö¶ÔÏóµÄÐÐΪ£¬ºÜ¿ÉÄÜͬʱÉæ¼°µ½Ð޸ĺܶàÆäËû¶ÔÏóµÄÐÐΪ¡£ÄÇôÕâʱ£¬¿ÉÒÔʹÓÃMediatorģʽ½«¼¯ÌåÐÐΪ·â×°ÔÚÒ»¸ö“ÖнéÕß”¶ÔÏóÖÐÒÔ±ÜÃâÕâ¸öÎÊÌ⡣ʹÓÃMediatorģʽ¿ÉÒÔʹ¸÷¸ö¶ÔÏó¼äµÄñîºÏËÉÉ¢£¬Ö»Òª¹ØÐÄÿ¸ö¶ÔÏóºÍMediatorµÄ¹Øϵ£¬ÕâÑùʹ¶à¶Ô¶àµÄ¹Øϵ±ä³ÉÁËÒ»¶Ô¶àµÄ¹Øϵ£¬Ã¿¸ö¶ÔÏ󶼺ÍMediatorÁªÏµ¡£½µµÍÁËϵͳµÃ¸´ÔÓÐÔ£¬Ìá¸ßÁË¿ÉÀ©Õ¹ÐԺͿÉÐÞ¸ÄÐÔ¡£



ÏÂÃæÊÇʵÀý´úÂ룺
package Mediator;

public abstract class Mediator
{
public abstract void register(Colleague c, String type);
public abstract void changed(String type);
}//end class Mediator

package Mediator;

public class ConcreteMediator extends Mediator
{
private ColleagueA a;
private ColleagueB b;
private ColleagueC c;

public ConcreteMediator()
{
//do something.
}//end ConcreteMediator()

public void register(Colleague colleague, String str)
{
if(str.equals("A")) {
a = (ColleagueA)colleague;
} else if (str.equals("B")) {
b = (ColleagueB)colleague;
} else if (str.equals("C")) {
c = (ColleagueC)colleague;
}
}//end register()

public void changed(String type)
{
if(type.equals("A")) {
b.action();
c.action();
} else if (type.equals("B")) {
a.action();
c.action();
} else if (type.equals("C")) {
a.action();
b.action();
}
}//end change()

}//end class changed()

package Mediator;

public abstract class Colleague
{
public abstract void change();
public abstract void action();
}//end class Colleague

package Mediator;

public class ColleagueA extends Colleague
{
private final String type = "A";
private Mediator med;

public ColleagueA(Mediator m)
{
med = m;
med.register(this, type);
}//end ColleagueA()

public void change()
{
System.out.println("---------- A changed now ! ----------");
med.changed(type);
}//end change()

public void action()
{
System.out.println(" A is changed by mediator ");
}//end action()

}//end class Colleague

package Mediator;

public class ColleagueB extends Colleague
{
private final String type = "B";
private Mediator med;

public ColleagueB(Mediator m)
{
med = m;
med.register(this, type);
}//end ColleagueB()

public void change()
{
System.out.println("----- B changed now ! -----");
med.changed(type);
}//end change()

public void action()
{
System.out.println(" B is changed by mediator ");
}//end action()

}//end class ColleagueB

package Mediator;

public class ColleagueC extends Colleague
{
private final String type = "C";
private Mediator med;

public ColleagueC(Mediator m)
{
med = m;
med.register(this, type);
}//end ColleagueC()

public void change()
{
System.out.println("----- C changed now ! -----");
med.changed(type);
}//end change()

public void action()
{
System.out.println(" C is changed by mediator ");
}//end action()

}//end class ColleagueC

/**//*
* MediatorPattern.java
*
* Created on 2006Äê5ÔÂ4ÈÕ, ÏÂÎç3:47
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package Mediator;

/** *//**
*
* @author Administrator
*/
public class MediatorPattern
{
Mediator myMed = new ConcreteMediator();
ColleagueA ca = new ColleagueA(myMed);
ColleagueB cb = new ColleagueB(myMed);
ColleagueC cc = new ColleagueC(myMed);

/** *//** Creates a new instance of MediatorPattern */
public MediatorPattern()
{
//do something.
}//end MediatorPattern()

public void showMediatorPattern()
{
ca.change();
cb.change();
cc.change();
}//end showMediatorPattern()

public static void main(String[] args)
{
StringBuilder strb = new StringBuilder("The Mediator Pattern!");
System.out.println(strb.toString());
MediatorPattern mp = new MediatorPattern();
mp.showMediatorPattern();
}//end main()

}//end class MediatorPattern


ÏÂÃæÊÇUMLͼ£º
Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
¡ü·µ»ØĿ¼
ǰһƪ: Ãô½Ý¿ª·¢µÄ±ØÒª¼¼ÇÉ£º±£³Ö´úÂë¼ò½à
ºóһƪ: JDK5.0»·¾³ÏÂÅäÖÃPKCS#11