java中介者模式

中介者模式主要在于解耦,使用一个中介的对象,封装一组对象之间的交互,这样这些对象就可以不用彼此耦合。

应用场景:

1.当一组对象要进行沟通或者业务上的交互,但是其关系又很复杂混乱时。

2.当一个对象与其他对象要进行紧密的交互,又不想依赖于其他对象时。

3.想创造一个运行于多个类之间的对象,又不想生成新的子类。

附代码:

 1 abstract class Link { //对象父类
 2     protected int number;
 3
 4     public int getNumber() {
 5         return number;
 6     }
 7
 8     public void setNumber(int number) {
 9         this.number = number;
10     }
11
12     public abstract void setNumber(int number, AbstractMediator am);
13 }
14
15 class LinkA extends Link {
16     @Override
17     public void setNumber(int number, AbstractMediator am) {
18         this.number = number;
19         am.AaffectB();
20     }
21 }
22
23 class LinkB extends Link {
24     @Override
25     public void setNumber(int number, AbstractMediator am) {
26         this.number = number;
27         am.BaffectA();
28     }
29 }
30
31 abstract class AbstractMediator { //中介者父类
32     protected Link A;
33     protected Link B;
34
35     public AbstractMediator(Link a, Link b) {
36         A = a;
37         B = b;
38     }
39     public abstract void AaffectB();
40     public abstract void BaffectA();
41 }
42 //No.1
43 class Mediator extends AbstractMediator {
44
45     public Mediator(Link a, Link b) {
46         super(a, b);
47     }
48
49     public void AaffectB() {
50         B.setNumber(A.getNumber() * 10);
51     }
52
53     public void BaffectA() {
54         A.setNumber(B.getNumber() / 10);
55     }
56 }
57
58
59 //end_code
60 public class MediatorTest {
61     public static void main(String[] args) {
62         Link linkA = new LinkA();
63         Link linkB = new LinkB();
64
65         AbstractMediator am = new Mediator(linkA, linkB);
66
67         System.out.println("通过设置A影响B");
68         linkA.setNumber(20, am);
69         System.out.println("A的值为:" + linkA.getNumber());
70         System.out.println("B的值为A的10倍:" + linkB.getNumber());
71
72         System.out.println("通过设置B影响A");
73         linkB.setNumber(200, am);
74         System.out.println("B的值为:" + linkB.getNumber());
75         System.out.println("A的值为B的0.1倍:" + linkA.getNumber());
76     }
77 }
时间: 2024-10-25 21:07:38

java中介者模式的相关文章

JAVA设计模式之 中介者模式【Mediator Pattern】

一.概述 用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.中介者模式又称为调停者模式,它是一种对象行为型模式. 二.适用场景 协调多个对象之间的交互. 三.UML类图 四.参与者 1.Mediator(抽象中介者):它定义一个接口,该接口用于与各同事对象之间进行通信. 2.ConcreteMediator(具体中介者):它是抽象中介者的子类,通过协调各个同事对象来实现协作行为,它维持了对各个同事对象的引用.

《JAVA与模式》之中介者模式(转载)

原文出处:http://blog.csdn.net/zhengzhb/article/details/7430098   定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互. 类型:行为类模式 类图: 中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信.一般包括一个或几个抽象的事件方法,并由子类去实现. 中介者实现类:从抽象

设计模式之第19章-中介者模式(Java实现)

设计模式之第19章-中介者模式(Java实现) “测试妹纸找你,你的代码出问题了.”“美工妹纸让你看看界面怎么样.”身为程序员总要和各种人打交道,但是如果再分为前端.后端工程师的话,那么关系就会错综复杂起来了,这个时候如果有中介者进行中转,类似于星型网络拓扑的交换机,那么该有多好.(PS:注孤生啊,和测试妹纸.美工妹纸什么的一起讨论增进感情多好,那么好的机会都不珍惜.编者按:我是要做那个中介者,懂么?中介者!众人:good job!)“鱼哥,叫我干嘛?”真是说曹操曹操到,刚刚正说你来着,行了,你

Java设计模式(十一)访问者模式 中介者模式

(二十一)访问者模式 对已存在的类进行扩展,通常需要增加方法,但是如果需要的行为与现有的对象模型不一致,或者无法修改现有代码.在这种情况下,不更改类的层次结构,就无法扩展该层次结构的行为.如果运用了访问者模式,就可以支持开发人员扩展该类层次结构的行为. 和解释器模式一样,访问者模式通常是基于合成模式的. 访问者模式在不改变类层次结构的前提下,对该层次结构进行扩展. interface Visitor{ public void visit(VisiSubject sub); } interface

折腾Java设计模式之中介者模式

博文原址:折腾Java设计模式之中介者模式 中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. 通俗点来讲就是提供一个中介平台,说到平台,那其实很容易联系到我们很熟悉的房地产中介.我们可以直接通过这个平台得到我们想要的信息,不用对象自身与其他对象交互. 买房子租房子就不需要去找房东,只需要在中介那里获取相应的×××信息.如下图那样,两方只

Java设计模式菜鸟系列(二十二)中介者模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109 中介者模式(Mediator):主要用来降低类与类之间的耦合的,因为如果类与类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改. 一.uml建模: 二.代码实现 /** * 中介者模式(Mediator):主要用来降低类与类之间的耦合的,因为如果类与类之间有依赖关系的话, * * 不利于功能的拓展和维护,因为只要修改一个对象,其它

java设计模式之中介者模式

中介者模式 用一个中介对象来封装一系列的对象交互.中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 中介者模式UML图 中介者模式代码 package com.roc.mediator; /** * 抽象中介者类 * @author liaowp * */ public abstract class Mediator { public abstract void send(String message,Colleague colleague); } pa

大话设计模式_中介者模式(Java代码)

中介者模式:用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 简单描述:1个抽象Colleague,其派生多个具体ConcreteColleague,每个具体ConcreteColleague都认识一个具体中介者.他们发送消息的时候是通过中介者发送.1个中介者,具体中介者认识所有的ConcreteColleague(即持有所有具体ConcreteColleague的引用),它提供向其他具体ConcreteColleag

Java设计模式系列之中介者模式

中介者模式(Mediator)的定义 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 中介者模式(Mediator)的适用性 1.一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解. 2.一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象. 3.想定制一个分布在多个类中的行为,但又不想生成太多的子类. 中介者模式(Mediator)的参与者 1.Mediator 中介者定义