设计模式-中介者模式
程序员文章站
2024-03-23 08:35:40
...
1.定义
使用中介者对象使其他对象之间相互解耦,每个对象只需要向中介者对象发出请求和接受请求即可
2.使用场景及设计
2.1.使用场景
房屋中介就是最好的例子,房屋中介使每个租客和房东之间相互解耦,都只需要接受中介的消息即可。
2.2.设计
类图如下:
3.测试代码
入口代码如下:
package com.glt.designpattern.mediator;
public class InitMain {
public static void main(String[] args) {
Mediator mediator = new Mediator();
Landlord landlord = new Landlord(mediator);
Renter renter = new Renter(mediator);
landlord.trade(1000);
renter.trade(1000);
}
}
package com.glt.designpattern.mediator;
/**
* 中介者对象
*/
public class Mediator {
void trade(User user,float price){
user.trade(price);
}
}
package com.glt.designpattern.mediator;
/**
* 抽象用户类
*/
public abstract class User {
Mediator mediator;
/**
* 交易
* @param price
*/
void trade(float price) {
}
User(Mediator mediator) {
this.mediator = mediator;
}
}
package com.glt.designpattern.mediator;
/**
* 房东
*/
public class Landlord extends User {
Landlord(Mediator mediator) {
super(mediator);
}
@Override
public void trade(float price) {
System.out.println("我的出租价格为:" + price);
}
}
package com.glt.designpattern.mediator;
/**
* 租客
*/
public class Renter extends User {
Renter(Mediator mediator) {
super(mediator);
}
@Override
public void trade(float price) {
System.out.println("我的租入价格为:" + price);
}
}
输出如下:
我的出租价格为:1000.0
我的租入价格为:1000.0
Process finished with exit code 0
4.总结
优点:
- 增加对象的复用性
- 通过将控制逻辑集中,简化了系统的维护
- 让对象之间传递消息变的更加简单
缺点:
如果系统设计不当, 会造成中介者对象变的过于复杂。