中介者模式: 定義一個對象來封裝一系列對象的交互. 中介者的四個角色: 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("文本框修改信息");
}
}
總結:
中介者模式很像觀察者模式,具體的使用場景和比較可以參考觀察者模式.