java设计模式_中介者模式

1 java模式中有一种模式:中介者模式。为什么会有这种模式呢。是因为当每个类和别的类有关联时,例如A类发生了变化会影响B类。B类发生了变化会影响A类。这两者类叫做同事类。如果有多个同事类则类的关系非常复杂。不易维护。这是就出现了中介者模式。中介者模式是利用中介者的关系。让中介者在中心,每个同事类都只和中介者有关联。这样的思路就清晰多了。也方便了维护和扩展。


2 中介者模式思路很巧妙。每个类都只和中介者有关联,这是该模式的核心所在。


3 代码如下:
public abstract class Tongshi {


public Tongshi() {
super();
// TODO Auto-generated constructor stub
}

public abstract void chuli();

public abstract void lianxiZhongjiezhe(Zhongjiezhe zongjiezhe_);
}




public class ATongshi extends Tongshi{

public ATongshi() {
super();
// TODO Auto-generated constructor stub
}


@Override
public void lianxiZhongjiezhe(Zhongjiezhe zongjiezhe) {
// TODO Auto-generated method stub
System.out.println("A联系中介者了");
zongjiezhe.chuliB();
}


@Override
public void chuli() {
// TODO Auto-generated method stub
System.out.println("处理了A");
}


}




public class BTongshi extends Tongshi{

public BTongshi() {
super();
// TODO Auto-generated constructor stub
}


@Override
public void chuli() {
// TODO Auto-generated method stub
System.out.println("处理了B");
}


@Override
public void lianxiZhongjiezhe(Zhongjiezhe zongjiezhe) {
// TODO Auto-generated method stub
System.out.println("B联系中介者了");
zongjiezhe.chuliA();
}


}




public abstract class Zhongjiezhe {


private Tongshi A=null;
private Tongshi B=null;
public Zhongjiezhe() {
super();
// TODO Auto-generated constructor stub
}
public Zhongjiezhe(Tongshi a, Tongshi b) {
super();
A = a;
B = b;
}

public abstract void chuliA();

public abstract void chuliB();
}




public class JutiZhongjiezhe extends Zhongjiezhe {


private Tongshi A=null;
private Tongshi B=null;

public JutiZhongjiezhe() {
super();
// TODO Auto-generated constructor stub
}


public JutiZhongjiezhe(Tongshi a, Tongshi b) {
super(a, b);
// TODO Auto-generated constructor stub
this.A=a;
this.B=b;
}


@Override
public void chuliA() {
// TODO Auto-generated method stub
this.A.chuli();
}


@Override
public void chuliB() {
// TODO Auto-generated method stub
this.B.chuli();
}


}




public static void main(String[] args) {
Tongshi A=new ATongshi();
Tongshi B=new BTongshi();
Zhongjiezhe zhongjiezhe=new JutiZhongjiezhe(A,B);
B.lianxiZhongjiezhe(zhongjiezhe);
}


4 中介者类中有每个同事类的对象作为属性,以及每个同事类的处理方法。这样就能保证中介者和每个同事类都有关联
如:
public class JutiZhongjiezhe extends Zhongjiezhe {


private Tongshi A=null;//把同事类A作为属性
private Tongshi B=null;//把同事类B作为属性

public JutiZhongjiezhe() {
super();
// TODO Auto-generated constructor stub
}


public JutiZhongjiezhe(Tongshi a, Tongshi b) {
super(a, b);
// TODO Auto-generated constructor stub
this.A=a;
this.B=b;
}


@Override
public void chuliA() {//为同事类A而预留的处理方法
// TODO Auto-generated method stub
this.A.chuli();
}


@Override
public void chuliB() {//为同事类B而预留的处理方法
// TODO Auto-generated method stub
this.B.chuli();
}


}


5每个同事类中有联系中介者类的方法。该方法中会利用中介者来联系和他有关联的同事类
如:public class ATongshi extends Tongshi{

public ATongshi() {
super();
// TODO Auto-generated constructor stub
}


@Override
public void lianxiZhongjiezhe(Zhongjiezhe zongjiezhe) {//联系中介者的方法
// TODO Auto-generated method stub
System.out.println("A联系中介者了");
zongjiezhe.chuliB();//利用中介者来联系和他有关联关系的同事类的方法,让其自动处理。
}


@Override
public void chuli() {
// TODO Auto-generated method stub
System.out.println("处理了A");
}


}


6 中介者里有每个同事类以及每个同事类的处理方法。每个同事类中有联系中介者的方法(该方法是让中介者来处理相关变化的同事类的处理)
如:   A       B
\      /
\     /
 \         /
  \   /
   \     /
    \   /
    中介者


综述:中介者模式(关键字:中介者,同事类)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值