定義:用來(lái)降低多個(gè)對(duì)象和類(lèi)之間的通信復(fù)雜性。中介者模式屬于行為型模式。
特點(diǎn):
1、降低了類(lèi)的復(fù)雜度,將一對(duì)多轉(zhuǎn)化成了一對(duì)一。
2、各個(gè)類(lèi)之間的解耦。
3、符合迪米特原則。
企業(yè)級(jí)開(kāi)發(fā)和常用框架中的應(yīng)用:mvc模式中的c
具體實(shí)例:
public class Demo { public static void main(String[] args) { Mediator m = new Mediator(); Department d1 = new Department(m, "開(kāi)發(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)目需要開(kāi)發(fā)", "dep"); d1.apply("開(kāi)發(fā)項(xiàng)目需要資金", "fin"); d1.apply("項(xiàng)目開(kāi)發(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)度各部門(mén)協(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ū)別:初一聽(tīng)這兩個(gè)模式的模式感覺(jué)這兩個(gè)模式好像是一個(gè)模式,但是這兩個(gè)模式卻完全不同,代理模式主要用于隱藏實(shí)際對(duì)象,不讓別人知道具體的操作細(xì)節(jié),而中介者模式則主要用戶多對(duì)象多對(duì)多的復(fù)雜交互,為了簡(jiǎn)化這些交互,才有了終結(jié)者模式。
|
新聞熱點(diǎn)
疑難解答
圖片精選