/**
* 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