`

【转】设计模式——中介者模式(Mediator)

 
阅读更多

中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。

如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。

User类统一接口,User1和User2分别是不同的对象,二者之间有关联,如果不采用中介者模式,则需要二者相互持有引用,这样二者的耦合度很高,

为了解耦,引入了Mediator类,提供统一接口,MyMediator为其实现类,里面持有User1和User2的实例,用来实现对User1和User2的控制。

这样User1和User2两个对象相互独立,他们只需要保持好和Mediator之间的关系就行,剩下的全由MyMediator类来维护!

★Mediator:

public interface Mediator {

public void createMediator();

public void workAll();

}

★MyMediator类:

public class MyMediator implements Mediator {

 

 

private User user1;

private User user2;

 

public User getUser1() {

return user1;

}

 

 

public User getUser2() {

return user2;

}

 

 

@Override

public void createMediator() {

user1 = new User1(this);

user2 = new User2(this);

}

 

 

@Override

public void workAll() {

user1.work();

user2.work();

}

}

★User及其User1、User2两个子类:

public abstract class User {

 

private Mediator mediator;

 

public Mediator getMediator(){

return mediator;

}

 

public User(Mediator mediator) {

this.mediator = mediator;

}

 

 

public abstract void work();

}

public class User1 extends User {

 

 

public User1(Mediator mediator){

super(mediator);

}

 

@Override

public void work() {

System.out.println("user1 exe!");

}

}

public class User2 extends User {

 

 

public User2(Mediator mediator){

super(mediator);

}

 

@Override

public void work() {

System.out.println("user2 exe!");

}

}

★测试:

public class Test {

 

 

public static void main(String[] args) {

Mediator mediator = new MyMediator();

mediator.createMediator();

mediator.workAll();

}

}

★输出:

user1 exe!

user2 exe!

 

--------------------- 

作者:panzihao_beijing 

来源:CSDN 

原文:https://blog.csdn.net/PanZiHao_BeiJing/article/details/80448152 

版权声明:本文为博主原创文章,转载请附上博文链接!

分享到:
评论

相关推荐

    C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式

    标题和描述均提到了"C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式",这明确指向了一个特定的设计模式——中介者模式(Mediator Pattern),并且是在C#语言环境下的应用。下面将详细阐述这一设计...

    设计模式 - 中介者模式

    中介者模式是一种行为设计模式,它用于减少多个对象之间的复杂交互,将这些对象通过一个共同的对象——中介者联系起来,使得各对象之间不再直接引用,而是通过中介者进行通信。这种模式降低了对象间的耦合度,提高了...

    C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式 (Level 300)

    **中介者模式(Mediator Pattern)**是一种行为设计模式,其主要目的是降低多个对象之间的通信复杂性,将这些对象的直接交互转化为与一个中心对象——中介者的交互。在C#中,中介者模式的应用能够有效地减少类之间的...

    mediator模式

    中介者模式将这些依赖关系集中到一个单独的对象——中介者上,使得各个对象只与中介者进行交互,而不再直接与其他对象通信。 在提供的文件列表中,我们可以看到以下组件: 1. `DepModel.java` 和 `DepUserModel....

    设计模式之中介模式Java实现版本

    **设计模式之中介模式——Java实现版本** 设计模式是软件工程中的一种最佳实践,它提供了解决常见问题的标准模板。中介模式(Mediator Pattern)属于行为设计模式,它旨在降低多个对象之间的复杂交互,通过引入一个...

    设计模式可复用面向对象软件的基础.zip

    5.5 MEDIATOR(中介者)—对象行为型 模式 181 5.6 MEMENTO(备忘录)—对象行为型 模式 188 5.7 OBSERVER(观察者)—对象行为型 模式 194 5.8 STATE(状态)—对象行为型模式 201 5.9 STRATEGY(策略)—对象行为...

    23种 设计模式---面向对象的基本原则

    - 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互,降低系统的耦合度。 - 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复...

    设计模式代码——c#

    C#设计模式(23种设计模式) 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器...

    设计模式精解——GoF23中设计模式解析

    ### 设计模式精解——GoF23中设计模式解析 #### 重要性与起源 设计模式是软件工程领域的一项重要研究,它提供了一系列解决常见软件设计问题的模板。GoF23指的是由Erich Gamma、Richard Helm、Ralph Johnson和John ...

    design-pattern-java.pdf

    遍历聚合对象中的元素——迭代器模式(四) 遍历聚合对象中的元素——迭代器模式(五) 遍历聚合对象中的元素——迭代器模式(六) 中介者模式-Mediator Pattern 协调多个对象之间的交互——中介者模式(一) 协调多...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    ### 设计模式精解——GoF 23种设计模式解析及C++实现 #### 0. 引言 设计模式作为面向对象编程的核心组成部分,是软件开发者在长期实践中总结出来的最佳实践。通过深入理解这些设计模式,我们可以更好地进行面向...

    设计模式PPT---25种设计模式详解

    这份名为“设计模式PPT——25种设计模式详解”的资料,显然是一个深入探讨设计模式的教程,它通过PDF格式对25种主要的设计模式进行了详尽的阐述。 首先,我们要理解设计模式的基本概念。设计模式不是代码,而是一种...

    X-gen PPT下载——《研磨设计模式》 实战

    3. **行为型模式**:包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式...

    设计模式 让你轻松理解设计模式,提高开发效率

    中介者模式是一种行为型设计模式,它用一个中介对象来封装一系列的对象交互。该模式减少了对象间的直接依赖关系,使得各个对象之间不再显式地相互引用,而是将依赖关系转交给中介者。文章中通过“MM之间的沟通”,...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **3.6 Mediator模式**:中介者模式用一个中介对象来封装一系列的对象交互。 - **3.7 Command模式**:命令模式将一个请求封装为一个对象,从而使用户可以用不同的请求来参数化客户端。 - **3.8 Visitor模式**:...

    设计模式C++版

    6. Mediator模式,中介者模式,用一个中介对象来封装一系列的对象交互。 ***mand模式,命令模式,将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。 8. Visitor模式,访问者模式,表示一个作用于某...

    设计模式

    在本篇文章中,我们将深入探讨一个具体的设计模式——中介者模式。 中介者模式是一种行为设计模式,它的主要目标是降低多个对象之间的耦合性,通过引入一个中介对象来协调这些对象之间的交互。在传统的多对象交互中...

Global site tag (gtag.js) - Google Analytics