美文网首页
设计模式(22)之中介者模式

设计模式(22)之中介者模式

作者: zhglance | 来源:发表于2019-07-08 14:53 被阅读0次

中介者模式(Mediator Pattern)用来降低多个对象之间的通信耦合问题,这样各对象之间具有了松耦合性,避免了对象之间的复杂网状关联,而是给出一个星状结构,星状结构的中心为中介者类。平常使用的银行系统,以及MVC(C是M和V的中介)。

一、需求举例:

在银行系统中,银行作为中介者,提供人与人之间的转账服务,下面以Man向Women转账为例。

二、类图:

三、代码实例:

1.抽象人员类:Person

package com.lance.mediator;

public abstract class Person {


    protected Mediator mediator;
    protected String name;
    protected String gender;

    public Person(String name, String gender,Mediator mediator) {
        this.name = name;
        this.gender = gender;
        this.mediator = mediator;
    }

    public boolean transferMoney(String currency, double moneyAmount, Person person) {
        return mediator.transferTo(currency, moneyAmount, person);
    }
}

2.男人类:Man

package com.lance.mediator;

public class Man extends Person {
    public Man(String name, String gender,Mediator mediator) {
        super(name, gender,mediator);
    }
}

3.女人类:Women

package com.lance.mediator;

public class Women extends Person {


    public Women(String name, String gender, Mediator mediator) {
        super(name, gender, mediator);
    }
}

4.中介者父类:Mediator

package com.lance.mediator;

public interface Mediator {

    boolean transferTo(String currency, double moneyAmount,Person person);
}

5.银行中介者:BankMediator

package com.lance.mediator;

public class BankMediator implements Mediator {

    private Person fromPerson;

    public BankMediator() {
    }

    public void setFromPerson(Person fromPerson) {
        this.fromPerson = fromPerson;
    }

    @Override
    public boolean transferTo(String currency, double moneyAmount, Person person) {

        if(moneyAmount <= 0) {
            return false;
        }

        System.out.println("transfer " + currency + moneyAmount + " from " + fromPerson.name + " to " + person.name);
        return true;
    }
}

6.主类:MediatorPattern

package com.lance.mediator;

public class MediatorPattern {

    public static void main(String[] args) {


        System.out.println("==========start==========");

        BankMediator bankMediator = new BankMediator();

        Person man = new Man("husband", "male", bankMediator);

        Person women = new Women("wife", "female", bankMediator);

        bankMediator.setFromPerson(man);


        man.transferMoney("CNY", 10000, women);


        System.out.println("==========end==========");

    }
}

输出结果:

==========start==========
transfer CNY10000.0 from husband to wife
==========end==========

相关文章

网友评论

      本文标题:设计模式(22)之中介者模式

      本文链接:https://www.haomeiwen.com/subject/fbcwhctx.html