輕松掌握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ǎn)化這些交互,才有了終結(jié)者模式。
- 詳解Java設(shè)計(jì)模式編程中的中介者模式
- Java設(shè)計(jì)模式之中介者模式(Mediator Pattern)簡(jiǎn)介
- java設(shè)計(jì)模式之中介者模式
- 設(shè)計(jì)模式之中介者模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- 23種設(shè)計(jì)模式(20)java中介者模式
- Java使用策略模式解決商場(chǎng)促銷商品問題示例
- 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ù)據(jù)結(jié)構(gòu)鏈表操作循環(huán)鏈表
這篇文章主要介紹了JAVA 數(shù)據(jù)結(jié)構(gòu)鏈表操作循環(huán)鏈表的相關(guān)資料,需要的朋友可以參考下2016-10-10Java實(shí)現(xiàn)簡(jiǎn)單的RPC框架的示例代碼
本篇文章主要介紹了Java實(shí)現(xiàn)簡(jiǎn)單的RPC框架的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11線程池FutureTask異步執(zhí)行多任務(wù)實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了線程池FutureTask異步執(zhí)行多任務(wù)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11深入理解Java中Filter的作用種類及應(yīng)用場(chǎng)景
Filter(過濾器)是Java Web中的一種重要組件,可以對(duì)請(qǐng)求和響應(yīng)進(jìn)行攔截處理,對(duì)數(shù)據(jù)進(jìn)行過濾和處理。Filter可以實(shí)現(xiàn)許多功能,如:鑒權(quán)、日志記錄、字符編碼轉(zhuǎn)換、數(shù)據(jù)壓縮、請(qǐng)求重定向等等2023-04-04Java中常用緩存Cache機(jī)制的實(shí)現(xiàn)
這篇文章主要介紹了Java中常用緩存Cache機(jī)制的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10使用AOP+反射實(shí)現(xiàn)自定義Mybatis多表關(guān)聯(lián)查詢
這篇文章主要介紹了使用AOP+反射實(shí)現(xiàn)自定義Mybatis多表關(guān)聯(lián),目前的需求是增強(qiáng)現(xiàn)有的查詢,使用簡(jiǎn)單的注解即可實(shí)現(xiàn)多表關(guān)聯(lián),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05