欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-28 18:57:28
中介者模式: 定义一个对象来封装一系列对象的交互. 中介者的四个角色: 1.Mediator(抽象中介者) 2.ConcreteMediator(具体中介者) 3.Colleague(抽象同事类) 4.ConcreteColleague(具体同事类) 举例说明: 例如公司开发一套CRM系统,该系统负 ......

中介者模式:
定义一个对象来封装一系列对象的交互.

中介者的四个角色:
1.mediator(抽象中介者)
2.concretemediator(具体中介者)
3.colleague(抽象同事类)
4.concretecolleague(具体同事类)

举例说明:
例如公司开发一套crm系统,该系统负责编辑客户的信息,其中有一个ui界面负责显示和修改客户信息.
该界面包括列表框,组合框,文本框,在这三个框内编辑用户信息,其他框内的信息都要相应的改变.

具体实现:

 

/**
*
* @classname: mediator
* @description: 抽象中介者类
* @author haibiscuit
* @date 2019年10月22日 下午5:10:26
*
*/

 

public abstract class mediator {
arraylist<mycomponent> arraylist;
protected void addmycomponent(mycomponent c) {
if (null == arraylist) {
arraylist = new arraylist<mycomponent>();
}
arraylist.add(c);
};

public abstract void componentchanged(mycomponent c);

 

}

 


/**
*
* @classname: concretemediator
* @description: 具体中介者类
* @author haibiscuit
* @date 2019年10月22日 下午5:11:41
*
*/
public class concretemediator extends mediator{
// 封装同事对象的交互
@override
public void componentchanged(mycomponent c) {
for (mycomponent mycomponent : arraylist) {
mycomponent.update();
}
}
}

 

/**
*
* @classname: mycomponent
* @description: 抽象组件类,充当抽象同事类
* @author haibiscuit
* @date 2019年10月22日 下午5:07:02
*
*/
public abstract class mycomponent {
protected mediator mediator;


public void setmediator(mediator mediator) {
this.mediator = mediator;

}

//转发调用
public void changed() {
mediator.componentchanged(this);
}

public abstract void update();
}

 

/**
*
* @classname: mycombobox
* @description: 组合框类,充当同事类
* @author haibiscuit
* @date 2019年10月22日 下午5:21:05
*
*/
public class mycombobox extends mycomponent{

@override
public void update() {
system.out.println("组合框修改信息");
}

}

 

/**
*
* @classname: mylist
* @description: 列表框类,充当具体同事
* @author haibiscuit
* @date 2019年10月22日 下午5:19:11
*
*/
public class mylist extends mycomponent{

@override
public void update() {
system.out.println("列表框修改信息");
}
}

 

/**
*
* @classname: mytextbox
* @description: 文本框类,充当同事类
* @author haibiscuit
* @date 2019年10月22日 下午5:19:45
*
*/
public class mytextbox extends mycomponent{

@override
public void update() {
system.out.println("文本框修改信息");
}
}

总结:

    中介者模式很像观察者模式,具体的使用场景和比较可以参考观察者模式.