Java设计模式-----Mediator中介者模式

来源:互联网 发布:网络改写的小说 编辑:程序博客网 时间:2024/05/21 01:28
 源自:http://www.blogjava.net/flustar/archive/2007/12/12/mediator.html

Mediator中介者模式:

用一个中介者对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。

例子:

public abstract class AbstractMediator {public abstract void register(AbstractColleague ac);public abstract void ColleagueChanged(AbstractColleague ac);}public class ConcreteMediator extends AbstractMediator {private ArrayList<abstractcolleague></abstractcolleague> colleagueList = new ArrayList<abstractcolleague></abstractcolleague>();public void register(AbstractColleague ac) {colleagueList.add(ac);}public void ColleagueChanged(AbstractColleague ac) {for (int i = 0; i < colleagueList.size(); i++) {if (colleagueList.get(i) != ac) {colleagueList.get(i).action();}}}}public abstract class AbstractColleague {private AbstractMediator med;public AbstractColleague(AbstractMediator mediator) {this.med = mediator;}public abstract void action();public void changed() {med.ColleagueChanged(this);}}public class ConcreteColleagueA extends AbstractColleague {public ConcreteColleagueA(AbstractMediator mediator) {super(mediator);mediator.register(this);}public void action() {System.out.println("AAAAAAAAAAAAAAA");}}public class ConcreteColleagueB extends AbstractColleague {public ConcreteColleagueB(AbstractMediator mediator) {super(mediator);mediator.register(this);}public void action() {System.out.println("BBBBBBBBBBBBBBB");}}public class ConcreteColleagueC extends AbstractColleague {public ConcreteColleagueC(AbstractMediator mediator) {super(mediator);mediator.register(this);}public void action() {System.out.println("CCCCCCCCCCCCCCC");}}public class Client {public static void main(String[] args) {AbstractMediator mediator = new ConcreteMediator();AbstractColleague colleagueA = new ConcreteColleagueA(mediator);AbstractColleague colleagueB = new ConcreteColleagueB(mediator);AbstractColleague colleagueC = new ConcreteColleagueC(mediator);colleagueA.changed();colleagueB.changed();colleagueC.changed();}}


 

原创粉丝点击