輕松掌握java中介者模式
定義:用來降低多個(gè)對(duì)象和類之間的通信復(fù)雜性。中介者模式屬于行為型模式。
特點(diǎn):
1、降低了類的復(fù)雜度,將一對(duì)多轉(zhuǎn)化成了一對(duì)一。
2、各個(gè)類之間的解耦。
3、符合迪米特原則。
企業(yè)級(jí)開發(fā)和常用框架中的應(yīng)用:mvc模式中的c
具體實(shí)例:
public class Demo {
public static void main(String[] args) {
Mediator m = new Mediator();
Department d1 = new Department(m, "開發(fā)部");
Department d2 = new Department(m, "財(cái)務(wù)部");
Department d3 = new Department(m, "策劃部");
m.add(d1, "dep");
m.add(d2, "fin");
m.add(d3, "c");
d2.apply("手里有一個(gè)項(xiàng)目需要開發(fā)", "dep");
d1.apply("開發(fā)項(xiàng)目需要資金", "fin");
d1.apply("項(xiàng)目開發(fā)完了,需要策劃發(fā)布", "c");
d3.apply("發(fā)布會(huì)需要資金", "fin");
}
}
class Department{
private String name;
private Mediator mediator;
public Department(Mediator mediator,String name) {
this.name = name;
this.mediator = mediator;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void apply(String thing,String coordinate){
System.out.println("我們是"+this.getName()+","+thing+",需要幫助");
mediator.dispatch(this, thing, coordinate);
}
public void handle(String name,String thing){
System.out.println("我們是"+this.getName()+","+name+"需要我們的幫助,我們馬上處理他們的事情");
System.out.println("*******************************************");
}
}
/**
*中介者對(duì)象,持有所有同事對(duì)象,負(fù)責(zé)調(diào)度各部門協(xié)調(diào)工作
*/
class Mediator{
private String name;
private Map<String, Department> map = new HashMap<String, Department>();
public void add(Department d,String name){
this.map.put(name, d);
}
public void dispatch(Department dpt,String thing,String coordinate){
Department d = map.get(coordinate);
d.handle(dpt.getName(),thing);
}
}
中介者模式和代理模式的區(qū)別:初一聽這兩個(gè)模式的模式感覺這兩個(gè)模式好像是一個(gè)模式,但是這兩個(gè)模式卻完全不同,代理模式主要用于隱藏實(shí)際對(duì)象,不讓別人知道具體的操作細(xì)節(jié),而中介者模式則主要用戶多對(duì)象多對(duì)多的復(fù)雜交互,為了簡化這些交互,才有了終結(jié)者模式。
- 詳解Java設(shè)計(jì)模式編程中的中介者模式
- Java設(shè)計(jì)模式之中介者模式(Mediator Pattern)簡介
- java設(shè)計(jì)模式之中介者模式
- 設(shè)計(jì)模式之中介者模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- 23種設(shè)計(jì)模式(20)java中介者模式
- Java使用策略模式解決商場促銷商品問題示例
- Java基于狀態(tài)模式實(shí)現(xiàn)的文檔編輯模式切換功能實(shí)例
- Java使用觀察者模式實(shí)現(xiàn)氣象局高溫預(yù)警功能示例
- Java使用訪問者模式解決公司層級(jí)結(jié)構(gòu)圖問題詳解
- Java基于代理模式解決紅酒經(jīng)銷問題詳解
- Java基于中介者模式實(shí)現(xiàn)多人聊天室功能示例
相關(guān)文章
Java使用橋接模式實(shí)現(xiàn)開關(guān)和電燈照明功能詳解
這篇文章主要介紹了Java使用橋接模式實(shí)現(xiàn)開關(guān)和電燈照明功能,較為詳細(xì)的講述了橋接模式的概念、原理并結(jié)合實(shí)例形式分析了Java使用橋接模式實(shí)現(xiàn)開關(guān)和電燈照明功能相關(guān)操作步驟與注意事項(xiàng),需要的朋友可以參考下2018-05-05
詳解spring mvc 請(qǐng)求轉(zhuǎn)發(fā)和重定向
這篇文章主要介紹了詳解spring mvc 請(qǐng)求轉(zhuǎn)發(fā)和重定向,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02

