设计模式笔记_18_中介者模式

package com.maom.design.D_18_Mediator;

/**
 * @Title: D_18_Mediator
 * @Description: 18_中介者模式
 * @Author maohb
 * @Version 1.0
 */
public class D_18_Mediator {

    public static void main(String[] args) {
        // 中介者对象 判断方法集中
        Mediator mediator = new Mediator();

        Person zhangsan = new Man("张三",7,mediator);
        Person lisi = new Man("李四",7,mediator);
        Person xiaofang = new Woman("小小芳",7,mediator);

        zhangsan.getPartner(lisi);
        xiaofang.getPartner(lisi);
    }

}


/** 中介者类 */
class Mediator {
    private Man man;
    private Woman woman;
    public void setMan(Man man) {
        this.man = man;
    }
    public void setWoman(Woman woman) {
        this.woman = woman;
    }
    /** 中介方法 */
    public void getPartner(Person person) {
        //将搭档设置上
        if (person instanceof Man)
            this.setMan((Man) person);
        else
            this.setWoman((Woman) person);
        //判断条件
        if (man == null || woman == null) {
            System.out.println("吖,我可不是同性恋!");
        }
        else {
            if (man.getCondition() == woman.getCondition())
                System.out.println(man.getName() + "和" + woman.getName() + "绝配");
            else
                System.out.println(man.getName() + "和" + woman.getName() + "不匹配");
        }
    }
}

abstract class Person {
    private String name;
    private int condition;
    private Mediator mediator;
    public Person(String name, int condition, Mediator mediator) {
        super();
        this.name = name;
        this.condition = condition;
        this.mediator = mediator;
    }
    public Mediator getMediator() {
        return mediator;
    }
    public void setMediator(Mediator mediator) {
        this.mediator = mediator;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getCondition() {
        return condition;
    }
    public void setCondition(int condition) {
        this.condition = condition;
    }
    // 抽象中介方法
    public abstract void getPartner(Person person);
}

class Man extends Person {
    public Man(String name, int condition, Mediator mediator) {
        super(name, condition, mediator);
    }
    public void getPartner(Person person) {
        this.getMediator().setMan(this);
        this.getMediator().getPartner(person); // 调用中介者方法
    }
}

class Woman extends Person {
    public Woman(String name, int condition, Mediator mediator) {
        super(name, condition, mediator);
    }
    public void getPartner(Person person) {
        this.getMediator().setWoman(this);
        this.getMediator().getPartner(person);
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值