中介者模式
中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“中介”对象,使得两头的对象分别和“中介”对象引用或者依赖。
当然并不是所有的对象都需要加入“中介”对象。如果对象之间的关系原本一目了然,中介对象的加入便是“画蛇添足”。
来看下中介者模式的组成部分吧。
1) 抽象中介者(Mediator)角色:抽象中介者角色定义统一的接口用于各同事角色之间的通信。
2) 具体中介者(Concrete Mediator)角色:具体中介者角色通过协调各同事角色实现协作行为。为此它要知道并引用各个同事角色。
3) 同事(Colleague)角色:每一个同事角色都知道对应的具体中介者角色,而且与其他的同事角色通信的时候,一定要通过中介者角色协作。
public class ColleagueA extends Colleague {
public void action() {
System.out.println("普通员工努力工作");
}
}
public class ColleagueB extends Colleague {
public void action() {
System.out.println("前台注意了"); } }
//中介者
public class ConcreteMediator extends Mediator {
private ColleagueA ca;
private ColleagueB cb;
public ConcreteMediator(){
ca = new ColleagueA();
cb = new ColleagueB(); }
public void notice(String content) {
if(content.equals("boss")){
//老板来了,通知员工A
ca.action(); }
if(content.equals("client")){
//客户来了,通知前台
cb.action(); } } }
//测试类
public class Test {
public static void main(String[] args) {
Mediator med = new ConcreteMediator();
med.notice("boss");
med.notice("client"); } }