Android的开发之&java23中设计模式------中介者模式

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

猜你喜欢

转载自blog.csdn.net/jie1123161402/article/details/78689468