黑马程序员技术交流社区

标题: 【济南校区】聊聊观察者模式 [打印本页]

作者: 大山哥哥    时间: 2019-3-30 21:28
标题: 【济南校区】聊聊观察者模式
众所周知,在安卓中应用最广泛的就是我们的观察者设计模式了,那么今天则来带着大家一起来聊聊所谓观察者首先,就观察者模式来说我们也可以理解为事件源触发后会通知多个监听器,什么意思呢?举个简单例子吧,很多同学应该都有看直播的习惯吧,如果是一个比较火的主播,那么他一上线,很多人就能收的他上播的信息,就可以进行观看直播.那么这种情况下受众较多.我们就直接用代码来表示把~
这里举例我们就用美女主播(MeiNvZhuBo)和抠脚大汉(KouJiaoDaHan)来表示把
美女肯定是主播嘛~
[Java] 纯文本查看 复制代码
public class MeiNvZhuBo {
        private List<KouJiaoDaHanObserver> mens = new ArrayList<>();
       
        public interface KouJiaoDaHanObserver{
                void watchDance();
        }
       
        public void addFocus(KouJiaoDaHanObserver s) {
                if(!mens.contains(s)) {
                        mens.add(s);
                }
        }
       
        public void removeFocus(KouJiaoDaHanObserver s) {
                if(mens.contains(s)) {
                        mens.remove(s);
                }
        }
       
        public  void dance() {
                for (KouJiaoDaHanObserver kouJiaoDaHanObserver : mens) {
                        kouJiaoDaHanObserver.watchDance();
                }
        }

}

抠脚大汉这就是我们的受众咯~接收到美女主播的开播信息后自然要去观看了~
[Java] 纯文本查看 复制代码
public class KouJiaoDaHan implements KouJiaoDaHanObserver {

        @Override
        public void watchDance() {
                System.out.println(this.getClass().getSimpleName()+"我在看美女主播跳舞了");
        }

}

public class KouJiaoDaHan2 implements KouJiaoDaHanObserver {

        @Override
        public void watchDance() {
                System.out.println(this.getClass().getSimpleName()+"我在看美女主播跳舞了");
        }

}

public class KouJiaoDaHan3 implements KouJiaoDaHanObserver {

        @Override
        public void watchDance() {
                System.out.println(this.getClass().getSimpleName()+"我在看美女主播跳舞了");
        }

}

那最后就是美女主播上播时发出消息咯~
[Java] 纯文本查看 复制代码
public class DouYu {
        public static void main(String[] args) {
                MeiNvZhuBo m = new MeiNvZhuBo();
                m.addFocus(new KouJiaoDaHan());
                m.addFocus(new KouJiaoDaHan2());
                m.addFocus(new KouJiaoDaHan3());
                m.dance();
        }

}


好了~最后结果如下~


作者: 1721121521    时间: 2019-3-31 00:24
完美





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2