博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java-马士兵设计模式学习笔记-观察者模式-OOD 封装Listener
阅读量:4969 次
发布时间:2019-06-12

本文共 1764 字,大约阅读时间需要 5 分钟。

 一、概述

childe类中的是关联监听者dad的,若要再增加监听者,会很不方便,且要修改代码。好的方法是封装监听者类,用addListener()方法动态添加监听者

 

二、代码

1.Test.java

class WakenUpEvent{		private long time;	private String location;	private Child source;		public WakenUpEvent(long time, String location, Child source) {		super();		this.time = time;		this.location = location;		this.source = source;	}	public long getTime() {		return time;	}	public void setTime(long time) {		this.time = time;	}	public String getLocation() {		return location;	}	public void setLocation(String location) {		this.location = location;	}	public Child getSource() {		return source;	}	public void setSource(Child source) {		this.source = source;	}		}class Child implements Runnable {		private List
wakenUpListeners = new ArrayList
(); public void addWakenUpListener(WakenUpListener wul){ wakenUpListeners.add(wul); } public void wakeUp(){ for(int i = 0; i < wakenUpListeners.size(); i++){ WakenUpListener l = wakenUpListeners.get(i); l.actionToWakenUp(new WakenUpEvent(System.currentTimeMillis(), "bed", this)); } } @Override public void run() { try { Thread.sleep(3000); } catch (Exception e) { e.printStackTrace(); } wakeUp(); }}interface WakenUpListener { public void actionToWakenUp(WakenUpEvent e);}class Dad implements WakenUpListener { public void actionToWakenUp(WakenUpEvent e) { System.out.println("Fedd the child"); } }class GrandFather implements WakenUpListener { public void actionToWakenUp(WakenUpEvent e) { System.out.println("抱孩子"); } }public class Test { public static void main(String[] args) { Child c = new Child(); c.addWakenUpListener(new Dad()); c.addWakenUpListener(new GrandFather()); new Thread(c).start(); }}

  

三、运行结果

转载于:https://www.cnblogs.com/shamgod/p/4588557.html

你可能感兴趣的文章
Linux 控制台/终端/tty/shell
查看>>
正则表达
查看>>
bigpipe nodejs
查看>>
MVC之前的那点事儿系列(3):HttpRuntime详解分析(下)
查看>>
nginx+tomcat负载均衡
查看>>
使用云负载时将http的请求转发至https时报错:“ERR_TOO_MANY_REDIRECTS”!
查看>>
dsm 黑 离线转码 备忘
查看>>
3.13 以类取代类型码
查看>>
linux安装sz && rz功能
查看>>
关于Hive正则技术处理比较规范的日志数据
查看>>
初学C语言
查看>>
T-SQL Recipes之Separating elements
查看>>
checked和unchecked的区别
查看>>
Web性能压力测试之Webbench使用详解
查看>>
php学习笔记6
查看>>
hdu2054 不要想太多,这就一水题
查看>>
CHtmlCtrl的实现
查看>>
洛谷 P1546 最短网络 Agri-Net
查看>>
Spring-cloud & Netflix 源码解析:Eureka 服务注册发现接口 ****
查看>>
技术blog链接
查看>>