语言互动网站建设/网站seo快速
01:中介者模式
02:设计模式 行为型模式 实例 – 中介者模式实例
1. 中介者模式
1.1 引入
1.2 分析
1.3 定义
1.4 结构
中介者模式包含以下主要角色:
1.4.1 典型的抽象中介者类代码
1.4.2 典型的具体中介者类代码
1.4.3 典型的抽象同事类代码
1.4.4 典型的具体同事类代码
1.5 【例】租房
现在租房基本都是通过房屋中介,房主将房屋托管给房屋中介,而租房者从房屋中介获取房屋信息。房屋中介充当租房者与房屋所有者之间的中介者。
Mediator.java
package com.tian.mediator;/*** @version v1.0* @ClassName: Mediator* @Description: 抽象中介者类*/
public abstract class Mediator {public abstract void constact(String message, Person person);
}
MediatorStructure.java
package com.tian.mediator;/*** @version v1.0* @ClassName: MediatorStructure* @Description: 具体的中介者角色类*/
public class MediatorStructure extends Mediator {//聚合房主和租房者对象private HouseOwner houseOwner;private Tenant tenant;public HouseOwner getHouseOwner() {return houseOwner;}public void setHouseOwner(HouseOwner houseOwner) {this.houseOwner = houseOwner;}public Tenant getTenant() {return tenant;}public void setTenant(Tenant tenant) {this.tenant = tenant;}public void constact(String message, Person person) {if (person == houseOwner) {tenant.getMessage(message);} else {houseOwner.getMessage(message);}}
}
Person.java
package com.tian.mediator;/*** @version v1.0* @ClassName: Person* @Description: 抽象同事类*/
public abstract class Person {protected String name;protected Mediator mediator;public Person(String name, Mediator mediator) {this.name = name;this.mediator = mediator;}
}
Tenant.java
package com.tian.mediator;/*** @version v1.0* @ClassName: Tenant* @Description: 具体的同事角色类: 租房者*/
public class Tenant extends Person {public Tenant(String name, Mediator mediator) {super(name, mediator);}//和中介联系(沟通)public void constact(String message) {mediator.constact(message, this);}//获取信息public void getMessage(String message) {System.out.println("租房者" + name + "获取到的信息是:" + message);}
}
HouseOwner.java
package com.tian.mediator;/*** @version v1.0* @ClassName: HouseOwner* @Description: 具体的同事角色类:房主*/
public class HouseOwner extends Person {public HouseOwner(String name, Mediator mediator) {super(name, mediator);}//和中介联系(沟通)public void constact(String message) {mediator.constact(message, this);}//获取信息public void getMessage(String message) {System.out.println("房主" + name + "获取到的信息是:" + message);}
}
Client.java
package com.tian.mediator;/*** @version v1.0* @ClassName: Client* @Description: 客户端类:测试类*/
public class Client {public static void main(String[] args) {//创建中介者对象MediatorStructure mediator = new MediatorStructure();//创建租房者对象Tenant tenant = new Tenant("李四", mediator);//创建房主对象HouseOwner houseOwner = new HouseOwner("张三", mediator);//中介者要知道具体的房主和租房者mediator.setTenant(tenant);mediator.setHouseOwner(houseOwner);tenant.constact("我要租三室的房子!!!");houseOwner.constact("我这里有三室的房子,你要租吗?");}
}