zoukankan      html  css  js  c++  java
  • 观察者模式

     下面我以大白话的讲述 跟大家分享一下观察者模式,

    举个例子狗仔队和明星的关系,实际上他们之间是一种寄生的关系,没有明星就没有狗仔队的饭,没有狗仔队明星也火不了。怎末火呢,暗中操作 ,明星提前通知狗仔队我要去干嘛,你过来拍我,爆料,其实这就是一种观察者模式。

    定义一个接口:gouzai

    public interface Gouzai {

      //发表微博的方法
        void fabiaoweibo();
    }
    //小张gouzai的实现类

    public class Xiaozhang implements Gouzai {

        public void fabiaoweibo() {
            System.out.println("发表文章");
        }
        
    }
    //定义一个网红的接口

    public interface Wanghong {

    //遛狗方法
        void liugou();

    //张大爷出门遛狗通知狗仔
        void addGouzai(Gouzai gouzai);
    }

    //张大爷是个网红
    public class Zhangdaye implements Wanghong{

      // 存放狗仔队接口
        private List<Gouzai> gouzais=new ArrayList<>();
      //张大爷出门遛狗 通知狗仔发表微博
        public void liugou() {
            System.out.println("张大爷出门遛狗了");
            for (Gouzai gouzai : gouzais) {
                gouzai.fabiaoweibo();
            }
        }
        public void addGouzai(Gouzai gouzai) {
            gouzais.add(gouzai);
        }

    }
    接下类我们定义一个测试类

     public class Test {
        public static void main(String[] args) {


            Zhangdaye zhangdaye = new Zhangdaye();

        //张大爷出门遛狗通知狗仔 小张啊 我要出门遛狗了 赶紧来看看我
            zhangdaye.addGouzai(new Xiaozhang());
           //张大爷出门遛狗   小张发表微博

        在我们看来 是有人监视着张大爷 出门就有人 偷拍他  实际上 是张大爷告诉狗仔  他要干什么事情的时候通知了 你一声

    这个模式就叫做观察者模式。
            zhangdaye.liugou();
        }
    }

    以上仅仅个人一点理解 不足之处 大家多多指点



     

  • 相关阅读:
    WPF PasswordBox不支持绑定解决方法
    获取当前日期是第几个星期
    WPF 事件触发命令
    EntityFramework使用动态Lambda表达式筛选数据
    C#发邮件
    Entity Framework 多对多查询的写法
    获取WPF窗口句柄
    C#调整图片亮度和对比度
    oracle 批量修改数据
    react前端自动化测试: jest + enzyme
  • 原文地址:https://www.cnblogs.com/xiaowazi/p/9084378.html
Copyright © 2011-2022 走看看