Java 之 23 种设计模式解析——22、中介者模式(Mediator)

22、中介者模式(Mediator)

 

中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。先看看图:

Java 之 23 种设计模式解析——22、中介者模式(Mediator)_第1张图片

User类统一接口,User1和User2分别是不同的对象,二者之间有关联,如果不采用中介者模式,则需要二者相互持有引用,这样二者的耦合度很高,为了解耦,引入了Mediator类,提供统一接口,MyMediator为其实现类,里面持有User1和User2的实例,用来实现对User1和User2的控制。这样User1和User2两个对象相互独立,他们只需要保持好和Mediator之间的关系就行,剩下的全由MyMediator类来维护!基本实现:

1. public interface Mediator {
2.	public	void	createMediator();
3.	public	void	workAll();
4. }
1. public class MyMediator implements Mediator {
2.
3.	private User user1;
4.	private User user2;
5.
6.	public User getUser1() {
7.	return user1;
8.	}
9.
10.	public User getUser2() {
11.	return user2;
12.	}
13.
14.	@Override
15.	public void createMediator() {
16.	user1 = new User1(this);
17.	user2 = new User2(this);
18.	}
19.
20.	@Override
21.	public void workAll() {
22.	user1.work();
23.	user2.work();
24.	}
25. }
1. public abstract class User {
2.
3.	private Mediator mediator;
4.
5.	public Mediator getMediator(){
6.	return mediator;
7.	}
8.
9.	public User(Mediator mediator) {
10.	this.mediator = mediator;
11.	}
12.
13.	public abstract void work();
14. }

 

1. public class User1 extends User {    
2.
3.	public User1(Mediator mediator){
4.	super(mediator);
5.	}
6.
7.	@Override
8.	public void work() {
9.	System.out.println("user1 exe!");
10.	}
11. }

 

1. public class User2 extends User {
2.
3.	public User2(Mediator mediator){
4.	super(mediator);
5.	}
6.
7.	@Override
8.	public void work() {
9.	System.out.println("user2 exe!");
10.	}
11. }

测试类:

1. public class Test {
2.
3.	public static void main(String[] args) {
4.	Mediator mediator = new MyMediator();
5.	mediator.createMediator();
6.	mediator.workAll();
7.	}
8. }

输出:

user1 exe!
user2 exe!

目录:(点击进入相应页面)

概述、六大原则

一、创建模式

0、简单工厂模式

1.工厂方法模式(Factory Method)

2、抽象工厂模式

3、单例模式(Singleton)

4、建造者模式(Builder)

5、原型模式(Prototype)

二、结构模式(7种)

6、适配器模式

7、装饰模式(Decorator)

8、代理模式(Proxy)

9、外观模式(Facade)

10、桥接模式(Bridge)

11、组合模式(Composite)

12、享元模式(Flyweight)

三、关系模式(11种)

13、策略模式(strategy)

14、模板方法模式(Template Method)

15、观察者模式(Observer)

16、迭代子模式(Iterator)

17、责任链模式(Chain of Responsibility)

18、命令模式(Command)

19、备忘录模式(Memento

20、状态模式(State)

21、访问者模式(Visitor)

22、中介者模式(Mediator)

23、解释器模式(Interpreter)

你可能感兴趣的:(23种设计模式)