美文网首页
那些你要知道的设计模式之-中介者

那些你要知道的设计模式之-中介者

作者: 小巨人Vea | 来源:发表于2018-04-22 12:06 被阅读4次

    一.定义

    用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,属于行为性模式

    二.作用

    • 降低类于类之间的耦合
    • 易于维护

    三.案例

    中介者模式比较简单,在实际项目开发中经常会被用到,先来一个简单的例子,ConcreteColleague代表具体同事类,具备具体的行为,并和中介者关联。

    //具体的同事类
    public class ConcreteColleague {
    
        private String name;
    
        private ConcreteMediator mediator;
    
        //通过构造函数和中介者关联
        public ConcreteColleague(String name, ConcreteMediator mediator) {
            this.name = name;
            this.mediator = mediator;
        }
    
        public void doSomething() {
            mediator.doSomething();
        }
    
        //行为
        public void say(){
            System.out.println("我叫"+name);
        }
    }
    

    在定义一个ConcreteMediator中介者,帮助同事类处理各种行为

    //中介者
    public class ConcreteMediator {
    
       private  ConcreteColleague colleague;
    
        public void setColleague(ConcreteColleague colleague) {
            this.colleague = colleague;
        }
    
        public void doSomething(){
            colleague.say();
        }
    }
    

    实际应用如下:

       public static void main(String[] args) {
            //定义中介者
            ConcreteMediator mediator =  new ConcreteMediator();
            //定义同事类
            ConcreteColleague colleague = new ConcreteColleague("小许",mediator);
            //中介者关系他的同事类
            mediator.setColleague(colleague);
            //帮助同事类处理行为
            mediator.doSomething();
    
        }
    

    看看执行结果:
    我叫小许

    四.总结

    • 使用场景
      当一个类和多个类有耦合关系的时候,为防止修改一个类,倒置多个类产生影响。可使用中介者模式
    • 优点
      中介者就是来减少类间的依赖关系,转多对多,为一对一
    • 缺点
      中介者就像一个水缸,当一个装不下的时候,就要多个,太多了就会泛滥。同事类越多,中介者也就越复杂,所以不要滥用,要适度。

    相关文章

      网友评论

          本文标题:那些你要知道的设计模式之-中介者

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