阿里巴巴 map遍历 Spring Cloud namespace ISP ssl layout safari notifications Validator 河南省普通话考试官网 jq第一个子元素 oracle查询所有数据库 查看kafka消费情况 java算法培训 mysql查看锁表 pcie高速固态硬盘 kubernetes官网 python图形界面开发 python抛异常 python定义一个变量 python正则匹配数字 java中继承 java的包 java文件写入 java的基本类型 java获取url java定义字符串 linuxsleep 图吧导航怎么样 hadoop权威指南 骁龙435 彻底删除mysql teraterm go2lan jlabel 什么模拟器最好 数独软件 小程序开发工具下载 视频编辑专家下载
当前位置: 首页 > 学习教程  > 编程语言

java设计模式之观察者模式

2020/8/11 20:35:46 文章标签:

定义

在对象间定义了一对多关系,当对象该表,依赖他的对象会收到通知并更新

代码

/**
 * 被观察者对象
 */
public class Subject {

    /**
     * 存放所有的观察者对象
     */
    private List<Observer> observerList;
    
    private String message;

    public Subject(){
        observerList = new ArrayList<>();
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
        notifyObserver();
    }

    public void add(Observer observer){
        observerList.add(observer);
    }

    public void remove(Observer observer){
        observerList.remove(observer);
    }

    public void notifyObserver(){
        for (Observer observer : observerList) {
            observer.update(this);
        }
    }
}
/**
 * 观察者抽象类
 */
public interface Observer {
    void update(Subject subject);
}
/**
 * 观察者实体类
 */
public class User implements Observer {

    private String name;

    private Subject subject;

    public User(String name) {
        this.name = name;
    }

    @Override
    public void update(Subject subject) {
        this.subject = subject;
        System.out.println(name + "收到消息:" + subject.getMessage());
    }
}
/**
 * 测试类(观察者模式)
 */
public class Test {
    public static void main(String[] args) {
        Subject subject = new Subject();
        Observer observer = new User("张三");
        subject.add(observer);
        subject.setMessage("java是世界上最好的语言");
    }
}

本文链接: http://www.dtmao.cc/news_show_100384.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?