设计模式之中介者模式

本文介绍了设计模式中的中介者模式,包括中介者接口(contact)的定义,以及买家(buyer)和卖家(seller)如何通过中介者接口进行通信。中介者类(intermediary)作为核心,负责协调两者间的交互。中介者模式在实际编程中可以减少类之间的耦合。若仅有一个中介者,接口可省略。
摘要由CSDN通过智能技术生成

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

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

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

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


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





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面向对象程序设计——实验指导与习题解答(张跃平等 著)》




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值