Mediator
將複雜的網狀關係變成由一個中介者來處理。
from: Mediator Pattern Tutorial with Java Examples
Example
Mediator
public abstract class Mediator {
protected ConcreteColleague1 c1;
protected ConcreteColleague2 c2;
public ConcreteColleague1 getC1() {
return c1;
}
public void setC1(ConcreteColleague1 c1) {
this.c1 = c1;
}
public ConcreteColleague2 getC2() {
return c2;
}
public void setC2(ConcreteColleague2 c2) {
this.c2 = c2;
}
public abstract void doSomething1();
public abstract void doSomething2();
}
public class ConcreteMediator extends Mediator {
@Override
public void doSomething1() {
super.c1.selfMethod1();
super.c2.selfMethod2();
}
@Override
public void doSomething2() {
super.c1.selfMethod1();
super.c2.selfMethod2();
}
}
Colleague
public abstract class Colleague {
protected Mediator mediator;
public Colleague(Mediator _mediator) {
this.mediator = _mediator;
}
}
public class ConcreteColleague1 extends Colleague {
public ConcreteColleague1(Mediator _mediator) {
super(_mediator);
}
// 處理自已的業務
public void selfMethod1() {};
// 跟其他同事相關的業務 交由中介者處理
public void depMethod1() {
super.mediator.doSomething1();
};
}
public class ConcreteColleague2 extends Colleague {
public ConcreteColleague2(Mediator _mediator) {
super(_mediator);
}
// 處理自已的業務
public void selfMethod2() {};
// 處理自已的業務和
// 把跟其他同事相關的業務 交由中介者處理
public void depMethod2() {
super.mediator.doSomething2();
};
}
from: 設計模式之禪