世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
- 意图
定义一个对象,封装一组对象的交互,降低对象之间的耦合度,对象之间无需显示引用,并且可以单独改变对象的交互方式。 - 类图
- 实例
// 对象间通信形式
interface Mediator{
void sendMessage(String message);
String receiveMessage();
}
class MediatorImpl1 implements Mediator{
private String message;
@Override
public void sendMessage(String message) {
this.message = message;
}
@Override
public String receiveMessage() {
return message;
}
}
// 聊天室形式
class SimpleMediator{
public static void showMessage(Me me, String message){
System.out.println(me.getName() + " send " + message);
}
}
class Me{
private String name;
private String message;
// 发送消息通过Mediator解耦合
public void sendMessage(){
SimpleMediator.showMessage(this, message);
}
public void sendMessage1(Mediator mediator){
mediator.sendMessage(message);
System.out.println("send : " + message);
}
public void receiveMessage1(Mediator mediator){
String re = mediator.receiveMessage();
System.out.println("re : " + re);
}
public static Me create(){
return new Me();
}
public String getName() {
return name;
}
public Me setName(String name) {
this.name = name;
return this;
}
public String getMessage() {
return message;
}
public Me setMessage(String message) {
this.message = message;
return this;
}
}
- 测试
class MediatorTest{
public static void main(String[] args) {
Me me1 = Me.create().setName("h1").setMessage("hello m2");
Me me2 = Me.create().setName("h2").setMessage("hello m1");
System.out.println("第一种 --- ");
me1.sendMessage();
me2.sendMessage();
System.out.println("第二种 --- ");
MediatorImpl1 mediatorImpl1 = new MediatorImpl1();
System.out.println("me1 发送:");
me1.sendMessage1(mediatorImpl1);
System.out.println("me2 接收:");
me2.receiveMessage1(mediatorImpl1);
}
}
运行结果:
第一种 ---
h1 send hello m2
h2 send hello m1
第二种 ---
me1 发送:
send : hello m2
me2 接收:
re : hello m2