• 设计模式之 中介者模式


    中介者模式 对象和对象直接不直接交互,而是通过一个中介者来实现对象之间的交互。使原有对象之间的关系变得松散,且可以通过定义不同的中介者来改变他们之间的交互。

    (1)定义房东

    public class Landlord{
        private final static Log logger = LogFactory.getLog(this.getClass());
        public boolean operation(String msg){
            logger.info("landlord receive a message from mediator"+msg);
            return true;
        }
    }

    (2)定义租户

    public class Tenant{
        private final static Log logger = LogFactory.getLog(this.getClass());
        public boolean operation(String msg){
            logger.info("tenant receive a message from mediator"+msg);
            return true;
        }
    }

    (3)定义中介

    public abstract class Mediator{
        protected Landlord landlord;
        protected Tenant tenant;
        public Mediator(Landlord landlord,Tenant tenant){
            this.landlord = landlord;
            this.tenant = tenant;
        }
    
        public abstract boolean notifyTenant(String msg);
        public abstract boolean notifyLandlord(String msg);
    }
    
    public class ConcreteMediator extends Mediator{
        public ConcreteMediator(Landlord landlord,Tenant tenant){
            super(landlord,tenant);
        }
    
        @Override
        public boolean notifyTenant(String msg) {
            if (tenant != null){
                return tenant.operation(msg);
            }
            return false;
        }
    
        @Override
        public boolean notifyLandlord(String msg) {
            if (landlord != null){
                return landlord.operation(msg);
            }
            return false;
        }
    }

    (4)使用中介者模式

    public static void main(String[] args){
        Landlord landlord = new Landlord();
        Tenant tenant = new Tenant();
        ConcreteMediator concreteMediator = new ConcreteMediator(landlord,tenant);
    
        boolean result = concreteMediator.notifyTenant("想租两室一厅吗?");
        if (result){
            concreteMediator.notifyLandlord("租客对面积满意");
        }else {
            concreteMediator.notifyLandlord("租客对面积不满意");
        }
    }

  • 相关阅读:
    静态主席树
    uva 11107 Life Forms
    codeforce 605B. Lazy Student
    codeforce 606B Testing Robots
    codeforce 606C
    codeforce 606A
    uva 11019 Matrix Matcher
    uva 11468 Substring
    uvalive 4670 Dominating Patterns
    codeforce 603B
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15239398.html
Copyright © 2020-2023  润新知