美文网首页
设计模式(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