美文网首页
行为型模式 --- 中介者模式

行为型模式 --- 中介者模式

作者: 十二找十三 | 来源:发表于2020-09-23 19:33 被阅读0次
    package study.org;
    
    import java.util.ArrayList;
    import java.util.List;
    
    // 测试类
    public class Demo {
        public static void main(String[] args) {
            Mediator md = new ConcreteMediator();
            
            Colleague c1 = new ConcreteColleague1();
            Colleague c2 = new ConcreteColleague2();
            
            md.register(c1);
            md.register(c2);
            
            c1.send();
            c2.send();
        }
    }
    
    // 中介者
    abstract class Mediator {
        public abstract void register(Colleague colleague);
    
        public abstract void relay(Colleague cl); // 转发
    }
    
    class ConcreteMediator extends Mediator {
    
        private List<Colleague> colleagues = new ArrayList<Colleague>();
    
        @Override
        public void register(Colleague colleague) {
            if (!colleagues.contains(colleague)) {
                colleagues.add(colleague);
                colleague.setMedium(this);
            }
        }
    
        @Override
        public void relay(Colleague cl) {
            for (Colleague ob : colleagues) {
                if (!ob.equals(cl)) {
                    ((Colleague) ob).receive();
                }
            }
        }
    }
    
    // 抽象同事类
    abstract class Colleague {
        protected Mediator mediator;
    
        protected void setMedium(Mediator mediator) {
            this.mediator = mediator;
        }
    
        public abstract void receive();
    
        public abstract void send();
    }
    
    //具体同事类1
    class ConcreteColleague1 extends Colleague {
        public void receive() {
            System.out.println("具体同事类1收到请求.");
        }
    
        public void send() {
            System.out.println("具体同事类1发出请求.");
            mediator.relay(this);
        }
    }
    
    //具体同事类2
    class ConcreteColleague2 extends Colleague {
        public void receive() {
            System.out.println("具体同事类2收到请求.");
        }
    
        public void send() {
            System.out.println("具体同事类2发出请求.");
            mediator.relay(this);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:行为型模式 --- 中介者模式

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