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

    1. java中的监听机制

    a) java中的事件监听机制涉及到 三个 部分 : 事件源. 事件对象, 事件监听器

    b) 当操作 事件源的时候, 会触发 事件 对象, 同时回去调用 事件监听器的某个特定的方法. 在调用这个方法的时候 传递的是 事件 对象

    c) 事件对象用来 封装 事件源, 通过事件对象可以拿到 事件源的 引用. 

    d) 事件监听器 通常 都是 一个接口, 事件监听器的具体实现类 由 程序员 自己去编写. 那么每个方法的代码就可以自己去控制. 在每个方法被调用的时候.传递进来了一个参数叫做 事件对象, 通过事件对象就可以拿到 事件源. 从而 干自己想干的事儿.

    2. 代码实现监听机制

    //事件源

    public class Person {

      private PersonListener pl;

      public void eat(){

      Event e = new Event(this);
      pl.doEat(e);
      System.out.println(" eat ......");
    }

    public void run(){

      Event e = new Event(this);
      pl.doRun(e);
      System.out.println(" run ......");
    }

    public void addPersonListener(PersonListener pl){
      this.pl = pl;
    }

    }
    // 事件监听器的接口
    interface PersonListener {
      public void doEat(Event e);
      public void doRun(Event e);
    }

    // 事件对象 , 用于封装事件源

    class Event {
    private Person p;

      public Event(Person p ) {
      this.p = p;
      }

      //用于返回 事件源
      public Person getP() {
      return p;
      }

    }

    3. 如何调用

    public class Demo2 {
      public static void main(String[] args) {
        // Person
        Person p = new Person(); // 事件源
        // 事件监听器
        p.addPersonListener(new MyPersonListener());
        p.eat();
      }
    }

    class MyPersonListener implements PersonListener {

      @Override
      public void doEat(Event e) {
        Person p = e.getP();
        System.out.println(p+ " 在 吃 ..... ");
      }

      @Override
      public void doRun(Event e) {
        // TODO Auto-generated method stub
    }

  • 相关阅读:
    安装MySQL(简便)
    许愿墙的搭建(基于Apache+php+mysql)
    httpd服务的安装、配置和关于php留言本网站的搭建
    Linux系统的初化始配置(包括配置网络,修改主机名,关闭firewalld与selinux的生效)
    Linux系统root用户忘记密码的重置方法
    Linux下面CentOS 7桌面的安装
    通过挂载系统光盘搭建本地yum仓库的方法
    时间同步ntp服务的安装与配置(作为客户端的配置)
    larbin
    Larbin的安装与配置
  • 原文地址:https://www.cnblogs.com/xumaodun/p/4910804.html
Copyright © 2011-2022 走看看