定義:用來降低多個對象和類之間的通信復雜性。中介者模式屬于行為型模式。
特點:
1、降低了類的復雜度,將一對多轉(zhuǎn)化成了一對一。
2、各個類之間的解耦。
3、符合迪米特原則。
企業(yè)級開發(fā)和常用框架中的應用:mvc模式中的c
具體實例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
public class Demo { public static void main(String[] args) { Mediator m = new Mediator(); Department d1 = new Department(m, "開發(fā)部" ); Department d2 = new Department(m, "財務部" ); Department d3 = new Department(m, "策劃部" ); m.add(d1, "dep" ); m.add(d2, "fin" ); m.add(d3, "c" ); d2.apply( "手里有一個項目需要開發(fā)" , "dep" ); d1.apply( "開發(fā)項目需要資金" , "fin" ); d1.apply( "項目開發(fā)完了,需要策劃發(fā)布" , "c" ); d3.apply( "發(fā)布會需要資金" , "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( "*******************************************" ); } } /** *中介者對象,持有所有同事對象,負責調(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ū)別:初一聽這兩個模式的模式感覺這兩個模式好像是一個模式,但是這兩個模式卻完全不同,代理模式主要用于隱藏實際對象,不讓別人知道具體的操作細節(jié),而中介者模式則主要用戶多對象多對多的復雜交互,為了簡化這些交互,才有了終結(jié)者模式。