/**
* Created by Administrator on 2017-10-12.
* 抽象中介者类
*/
public abstract class Mediator {
//用于添加存储“房东”
protected List<Person> landlordList=new ArrayList<>();
//用于添加存储“租房人”
protected List<Person> renterList=new ArrayList<>();
/**
* 中介者注册房东信息
*/
public void registerLandlord(Person landlord){
landlordList.add(landlord);
}
/**
* 中介者注册 租房人信息
*/
public void registerRenter(Person renter){
renterList.add(renter);
}
/**
* 声明抽象方法,由具体中介者子类实现,消息的中转和协调
*/
public abstract void operation(Person person,String message);
}
/**
* Created by Administrator on 2017-10-12.
* 具体中介者类:这里的角色是 房屋出租中介
*/
public class HouseMediator extends Mediator {
@Override
public void operation(Person person, String message) {
if (person instanceof Renter){
//将租屋的需求消息传递给 注册了的房东们
for (Person landlord:landlordList){
landlord.getMessage(message);
}
}else if (person instanceof Landlord){
for (Person renter : renterList){
renter.getMessage(message);
}
}
}
}
/**
* Created by Administrator on 2017-10-12.
* 抽象同事类
*/
public abstract class Person {
//维持一个抽象中介者的引用
protected Mediator mediator;
protected String name;
public Person(String name,Mediator mediator){
this.name=name;
this.mediator=mediator;
}
/**
* 设置中介者对象
*/
public void setMediator(Mediator mediator){
this.mediator=mediator;
}
/**
* 向中介发送消息
*/
protected abstract void sendMessage(String msg);
/**
* 从中介获取消息
*/
protected abstract void getMessage(String msg);
}
/**
* Created by Administrator on 2017-10-12.
* 房东
*/
public class Landlord extends Person {
public Landlord(String name, Mediator mediator) {
super(name, mediator);
}
@Override
protected void sendMessage(String msg) {
mediator.operation(this,msg);
}
@Override
protected void getMessage(String msg) {
System.out.println("房东["+ name +"]收到中介发来的消息:" + msg);
}
}
/**
* Created by Administrator on 2017-10-12.
* 租房者
*/
public class Renter extends Person{
public Renter(String name, Mediator mediator) {
super(name, mediator);
}
@Override
protected void sendMessage(String msg) {
mediator.operation(this,msg);
}
@Override
protected void getMessage(String msg) {
System.out.println("租房人[" + name + "]收到中介发来的消息: " + msg);
}
}
/**
* 中介者模式(Mediator)
*/
public class MediatorMethodActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mediator_method);
//实例化房屋中介
Mediator mediator=new HouseMediator();
Person landlordA,landlordB,renter;
landlordA=new Landlord("房东张三",mediator);
landlordB=new Landlord("房东李四",mediator);
renter=new Renter("租房者王五",mediator);
//房东注册中介
mediator.registerLandlord(landlordA);
mediator.registerLandlord(landlordB);
//租房者注册中介
mediator.registerLandlord(renter);
//租房者发送求租消息
renter.sendMessage("想在天通苑租套房子");
System.out.println("--------------------------------------");
//房东张三发送房屋出租消息
landlordA.sendMessage("霍营有一室一厅出租");
}
}
github地址:https://github.com/zyj18410105150/DesignMode