设计模式之中介者模式

中介者接口(contact):定义了使用中介者接口通信的方法。

A类(buyer):使用中介者接口通信的具体类。

B类(seller):使用中介者接口通信的具体类。

中介者类(intermediary):对使用中介者接口通信的类进行处理转发的类。


PS:如果仅仅需要一个中介者,模式中的中介者接口可以省略。


设计模式之中介者模式_第1张图片



public interface contact{
public void giveMess(String mess);
public void receiveMess(String mess);
public void setName(String name);
public String getName();
}
public class buyer implements contact{
String name;
intermediary i;
buyer(intermediary i){
this.i=i;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void giveMess(String mess){
i.deliverMess(this,mess);
}
public void receiveMess(String mess){
System.out.println(name+"收到的消息:");
System.out.println("\t"+mess);
}
}


public class seller implements contact{
String name;
intermediary i;
seller(intermediary i){
this.i=i;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void giveMess(String mess){
i.deliverMess(this,mess);
}
public void receiveMess(String mess){
System.out.println(name+"收到的消息:");
System.out.println("\t"+mess);
}
}

public class intermediary{
buyer[] b;
seller[] s;
public void setBuyer(buyer[] b){
this.b=b;
}
public void setSeller(seller[] s){
this.s=s;
}
public void deliverMess(contact c,String mess){
if(c instanceof buyer){
for(seller x:s){
x.receiveMess("我是"+c.getName()+","+mess);
}
}
else if(c instanceof seller){
for(buyer x:b){
x.receiveMess("我是"+c.getName()+","+mess);
}
}
}
}

public class application{
public static void main(String args[]){
intermediary i=new intermediary();
buyer[] b=new buyer[1];
seller[] s=new seller[2];
b[0]=new buyer(i);
s[0]=new seller(i);
s[1]=new seller(i);
i.setBuyer(b);
i.setSeller(s);
b[0].setName("李买");
s[0].setName("白小卖");
s[1].setName("白大卖");
b[0].giveMess("我要买手机,不超过3000元。");
b[0].giveMess("我要买电脑,不超过6000元。");
s[0].giveMess("我卖手机,2999元。");
s[1].giveMess("我卖电脑,5999元。");
}
}

输出:

白小卖收到的消息:
	我是李买,我要买手机,不超过3000元。
白大卖收到的消息:
	我是李买,我要买手机,不超过3000元。
白小卖收到的消息:
	我是李买,我要买电脑,不超过6000元。
白大卖收到的消息:
	我是李买,我要买电脑,不超过6000元。
李买收到的消息:
	我是白小卖,我卖手机,2999元。
李买收到的消息:
	我是白大卖,我卖电脑,5999元。


参考自 《java面向对象程序设计——实验指导与习题解答(张跃平等 著)》




你可能感兴趣的:(设计模式,JAVA学习)