java有准备将房屋出租的张三和李四以及准备租房的朱方,要求使用一个中介公司协调张三、李四和朱方之间的信息交互。张三让中介公司向准备租房的用户转达的信息是:“房屋出租:租金是800元/月”;李四让中介公司向准备租房的用户转达的信息是:“房屋出租: 租金是900元/月”,朱方让中介公司向准备出租的用户转达的信息是:“求租房屋:租金不高于800元/月”。使用中介者模式让房屋出租者和求租者通过中介者转达各自的出租条件和求租条件.
时间: 2023-11-28 21:51:40 浏览: 143
中介者模式是一种行为型设计模式,它可以将对象之间的通信方式从直接的方式转变为通过一个中介者对象来进行。在这个例子中,我们可以将中介公司作为中介者对象,房屋出租者和求租者作为同事对象,通过中介公司来进行信息的传递。
具体实现方式如下:
首先定义一个抽象的中介者接口,里面定义了两个方法,一个是向房屋出租者发送信息的方法,一个是向求租者发送信息的方法。
```java
public interface Mediator {
void sendToLandlord(String message);
void sendToTenant(String message);
}
```
然后定义房屋出租者和求租者两个同事类,它们都有一个中介者对象的引用,通过这个引用来与中介公司进行通信。
```java
public class Landlord {
private Mediator mediator;
public Landlord(Mediator mediator) {
this.mediator = mediator;
}
public void sendMessage(String message) {
mediator.sendToTenant(message);
}
public void getMessage(String message) {
System.out.println("房屋出租者收到的信息:" + message);
}
}
public class Tenant {
private Mediator mediator;
public Tenant(Mediator mediator) {
this.mediator = mediator;
}
public void sendMessage(String message) {
mediator.sendToLandlord(message);
}
public void getMessage(String message) {
System.out.println("求租者收到的信息:" + message);
}
}
```
最后定义一个具体的中介者类,它实现了中介者接口,并且持有房屋出租者和求租者两个同事对象的引用。当房屋出租者或求租者向中介公司发送信息的时候,中介公司会调用相应的方法将信息转发给对应的对象。
```java
public class RealEstateAgency implements Mediator {
private Landlord landlord;
private Tenant tenant;
public void setLandlord(Landlord landlord) {
this.landlord = landlord;
}
public void setTenant(Tenant tenant) {
this.tenant = tenant;
}
@Override
public void sendToLandlord(String message) {
landlord.getMessage(message);
}
@Override
public void sendToTenant(String message) {
tenant.getMessage(message);
}
}
```
现在我们可以在主函数中创建房屋出租者、求租者和中介公司对象,并且将房屋出租者和求租者对象分别传递给中介公司对象。
```java
public static void main(String[] args) {
RealEstateAgency agency = new RealEstateAgency();
Landlord landlord = new Landlord(agency);
Tenant tenant = new Tenant(agency);
agency.setLandlord(landlord);
agency.setTenant(tenant);
landlord.sendMessage("房屋出租:租金是800元/月");
tenant.sendMessage("求租房屋:租金不高于800元/月");
System.out.println("--------");
Landlord landlord1 = new Landlord(agency);
Tenant tenant1 = new Tenant(agency);
agency.setLandlord(landlord1);
agency.setTenant(tenant1);
landlord1.sendMessage("房屋出租:租金是900元/月");
tenant1.sendMessage("求租房屋:租金不高于800元/月");
}
```
运行结果如下:
```
求租者收到的信息:房屋出租:租金是800元/月
房屋出租者收到的信息:求租房屋:租金不高于800元/月
--------
求租者收到的信息:房屋出租:租金是900元/月
房屋出租者收到的信息:求租房屋:租金不高于800元/月
```
从结果可以看出,房屋出租者和求租者通过中介公司进行了信息的传递。这种方式可以减少对象之间的直接交互,降低耦合度,增加系统的灵活性和可扩展性。
阅读全文