- 浏览: 25984 次
- 性别:
- 来自: 上海
文章分类
用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
public interface Mediator {
public void changed(Colleague colleague);
}
public abstract class Colleague {
private Mediator mediator;
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
public Mediator getMediator() {
return mediator;
}
}
public class ConcreteColleagueA extends Colleague {
public ConcreteColleagueA(Mediator mediator) {
super(mediator);
}
public void someOperation() {
getMediator.changed(this);
}
}
public class ConcreteColleagueB extends Colleague {
public ConcreteColleagueB(Mediator mediator) {
super(mediator);
}
public void someOperation() {
getMediator.changed(this);
}
}
public class ConcreteMediator implements Mediator {
private ConcreteColleagueA colleagueA;
private ConcreteColleagueB colleagueB;
public void setConcreteColleagueA(ConcreteColleagueA colleagueA) {
this.colleagueA = colleagueA;
}
public void setConcreteColleagueB(ConcreteColleagueB colleagueB) {
this.colleagueB = colleagueB;
}
public void changed(Colleague colleague) {
}
}
要使用中介者模式来实现,就要区分出同事对象和中介者对象。主板是作为中介者,而光驱、CPU、声卡、显卡等配件,都是作为同事对象。
同事关系:在标准的中介者模式中,将使用中介者对象来交互的那些对象称为同事类。
同事和中介者的关系:在中介者模式中,当一个同事对象发生了改变,需要主动通知中介者,让中介者去处理与其他同事对象相关的交互。
优点:多对多变一对多
public interface Mediator {
public void changed(Colleague colleague);
}
public abstract class Colleague {
private Mediator mediator;
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
public Mediator getMediator() {
return mediator;
}
}
public class ConcreteColleagueA extends Colleague {
public ConcreteColleagueA(Mediator mediator) {
super(mediator);
}
public void someOperation() {
getMediator.changed(this);
}
}
public class ConcreteColleagueB extends Colleague {
public ConcreteColleagueB(Mediator mediator) {
super(mediator);
}
public void someOperation() {
getMediator.changed(this);
}
}
public class ConcreteMediator implements Mediator {
private ConcreteColleagueA colleagueA;
private ConcreteColleagueB colleagueB;
public void setConcreteColleagueA(ConcreteColleagueA colleagueA) {
this.colleagueA = colleagueA;
}
public void setConcreteColleagueB(ConcreteColleagueB colleagueB) {
this.colleagueB = colleagueB;
}
public void changed(Colleague colleague) {
}
}
要使用中介者模式来实现,就要区分出同事对象和中介者对象。主板是作为中介者,而光驱、CPU、声卡、显卡等配件,都是作为同事对象。
同事关系:在标准的中介者模式中,将使用中介者对象来交互的那些对象称为同事类。
同事和中介者的关系:在中介者模式中,当一个同事对象发生了改变,需要主动通知中介者,让中介者去处理与其他同事对象相关的交互。
优点:多对多变一对多
发表评论
-
访问者模式Visitor预留通路,回调实现
2014-03-13 16:55 393表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
桥接模式Bridge分离抽象和实现
2014-03-13 16:55 507将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接 ... -
职责链模式Chain of Responsibility分离职责,动态组合
2014-03-12 17:25 343使多个对象都有机会处 ... -
装饰模式Decorator动态组合
2014-03-12 17:00 279动态地给一个对象添加 ... -
解释器模式Interpreters分离实现,解释执行
2014-03-12 16:27 318给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解 ... -
享元模式Flyweight分离与共享
2014-03-12 13:20 304运用共享技术有效地支持大量细粒度的对象。 安全实体:就是被系 ... -
备忘录模式Memento保存和回复内部状态
2014-03-11 17:47 434在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 ... -
状态模式State根据状态来分离和选择行为
2014-03-11 17:20 404允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改 ... -
策略模式Strategy分离算法,选择实现
2014-03-11 15:26 419迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信 ... -
模板方法模式Templete Method 固定算法骨架
2014-03-11 11:15 539定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法 ... -
组合模式Composite统一叶子对象和组合对象
2014-03-07 18:18 309将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使 ... -
迭代器模式Iterator 控制访问聚合对象中的元素
2014-03-07 17:57 414提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该 ... -
命令模式Command 封装请求
2014-03-07 16:26 382将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 ... -
观察者模式Observer订阅模式-触发联动
2014-03-07 11:19 387定义对象间的一种一对 ... -
代理模式Proxy 为别人做嫁衣(控制对象访问)
2014-03-06 00:39 339为其他对象提供一种代理以控罪对这个对象的访问。 代理大致被分为 ... -
原型模式Prototype 克隆生成对象
2014-03-06 00:19 570用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ... -
生成器模式Builder 分离整体构建算法和部件构造
2014-03-06 00:19 310将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ... -
抽象工厂模式 Abstract Factory 选择产品簇的实现
2014-03-06 00:20 424工厂方法模式或简单工 ... -
工厂方法模式Factory Method延迟到子类来选择实现
2014-03-05 18:12 952定义一个用于创建对象 ... -
单例模式Singleton某个类只需要一个类实例
2014-03-05 16:46 428保证一个类只有一个实例,并提供一个访问它的全局访问点。 懒汉 ...
相关推荐
标题和描述均提到了"C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式",这明确指向了一个特定的设计模式——中介者模式(Mediator Pattern),并且是在C#语言环境下的应用。下面将详细阐述这一设计...
**中介者模式(Mediator Pattern)**是一种行为设计模式,它定义了一个用来封装一系列对象交互的接口。在软件工程中,当多个对象之间存在复杂的相互依赖关系时,这种模式可以帮助我们降低系统的耦合度,使得各个对象...
中介者模式是一种行为设计模式,它用于减少多个对象之间的复杂交互,将这些对象通过一个共同的对象——中介者联系起来,使得各对象之间不再直接引用,而是通过中介者进行通信。这种模式降低了对象间的耦合度,提高了...
### C++设计模式之Mediator(中介者)详解 #### 一、引言 在软件开发过程中,随着系统的复杂度逐渐增加,各个组件之间的交互变得越来越频繁,这不仅增加了系统的耦合度,还使得系统维护变得困难重重。为了解决这一...
Mediator模式是一种行为设计模式,它定义了一个用来封装一系列对象相互作用的接口,使得这些对象不必显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。这种模式在软件开发中常用于简化对象间的...
中介者模式(Mediator Pattern)是一种行为设计模式,用于封装一组对象间的交互。通过中介者对象,各对象不需要直接引用彼此,而是通过中介者进行间接通信,从而实现了对象间的松耦合。这一模式不仅简化了对象之间的...
中介者模式是一种设计模式,它在软件工程中用于降低多个对象之间的复杂交互。这个模式的主要目的是通过引入一个中介对象来封装一系列对象之间的交互,使得这些对象不必显式地相互引用,从而让对象间的耦合度降低,...
1. **Mediator(中介者)**: 这是模式的核心,定义了各个同事对象之间交互的接口。Mediator抽象类通常包含一组用于与同事对象交互的方法。 2. **Concrete Mediator(具体中介者)**: 实现Mediator接口,负责协调各个...
中介者模式的核心思想是引入一个中介对象来封装一系列对象之间的交互。这样,原本直接相互引用的对象不再直接通信,而是通过中介对象进行交互,降低了对象间的耦合度。在大型软件系统中,对象之间的关系往往错综复杂...
总结来说,Java设计模式中的中介者模式是一种强大的工具,用于管理和协调对象之间的交互。通过引入中介者,我们可以有效地减少对象间的耦合,提高代码的可读性和可维护性,同时增加系统的灵活性和扩展性。在实际开发...
中介者模式是软件设计模式中的一种行为模式,其主要目的是减少对象之间的依赖关系,降低对象间的耦合度,使得系统更易于理解和维护。在中介者模式中,一个或多个对象(称为同事对象)通过中介者对象进行通信,而不是...
中介者模式(Mediator)是一种行为型设计模式,其核心思想在于通过引入一个中介者对象来封装一系列对象间的交互关系。在软件工程中,这种模式主要用于减少类之间复杂的直接通信,从而降低系统间的耦合性,提高可维护...
中介者模式是一种行为设计模式,它定义了一个用来封装一系列对象交互的抽象接口,并且使得这些对象不必显式地相互引用,从而使得它们可以独立地改变它们之间的交互。这种模式在软件工程中广泛应用,特别是在需要解耦...
中介者模式是一种行为设计模式,它允许将对象间的直接交互简化为通过一个中介对象来实现。这种模式的目的是减少类之间不必要的直接通信,从而降低系统的耦合度。 在PHP中实现中介者模式,主要涉及以下几个关键组件...
中介者模式的核心思想是引入一个中介对象来封装一系列对象之间的交互,使得这些对象不必显式地相互引用,从而可以独立地改变它们之间的交互。这种模式将复杂的网状结构转换为星型结构,使得代码更加清晰,易于维护。...
中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。
中介模式(Mediator Pattern)属于行为设计模式,它旨在降低多个对象之间的复杂交互,通过引入一个中介对象来封装原本复杂的网状结构,使得这些对象之间的通信变得简单和可复用。在Java中,我们可以很容易地实现这个...