Java-马士兵设计模式学习笔记-观察者模式-模拟Awt Button
一、概述
Java 的Awt是 Observer模式,现用Java自己模拟awt中Button的运行机制
二、代码
1.Test.java
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; public class Test { public static void main(String[] args) {
Button b = new Button();
b.addActionListener(new MyActionListener1());
b.addActionListener(new MyActionListener2());
b.buttonPress();
}
} class Button { //用List存放Listener
private List<ActionListener> actionListeners = new ArrayList<ActionListener>(); public void addActionListener(ActionListener l) {
actionListeners.add(l);
} public void buttonPress(){
ActionEvent e = new ActionEvent(System.currentTimeMillis(), this);
for (ActionListener l : actionListeners) {
l.actionPerformed(e);
}
}
} interface ActionListener {
public void actionPerformed(ActionEvent e);
} class MyActionListener1 implements ActionListener { @Override
public void actionPerformed(ActionEvent e) {
System.out.println("MyActionListener1");
System.out.println("事件发生时间:"+e.getTime()+" 事件源:"+e.getSource());
} } class MyActionListener2 implements ActionListener { @Override
public void actionPerformed(ActionEvent e) {
System.out.println("MyActionListener2");
System.out.println("事件发生时间:"+e.getTime()+" 事件源:"+e.getSource()); } } class ActionEvent { private long time;
private Object source; public ActionEvent(long time, Object source) {
this.time = time;
this.source = source;
} public Object getSource() {
return source;
} public String getTime() {
// DateFormat df = new SimpleDateFormat("dd:MM:yy:HH:mm:ss");
DateFormat df = new SimpleDateFormat("yyyy:MM:dd---HH:mm:ss");
return df.format(new Date(time));
} }
三、运行结果

Java-马士兵设计模式学习笔记-观察者模式-模拟Awt Button的更多相关文章
- Java-马士兵设计模式学习笔记-观察者模式-AWT简单例子
1.AWT简单例子 TestFrame.java import java.awt.Button; import java.awt.Frame; import java.awt.event.Action ...
- Java-马士兵设计模式学习笔记-观察者模式-OOD线程
一.概述 1.情景:孩子睡觉,醒后要吃东西,用java模拟此情况 2.设计:child类,Dad类,都继承Runnable,dad线程监视child线程(缺点:因为要监视,所以耗cup资源) 二.代码 ...
- Java-马士兵设计模式学习笔记-观察者模式-读取properties文件改成单例模式
一.概述 1.目标:读取properties文件改成单例模式 二.代码 1.Test.java class WakenUpEvent{ private long time; private Strin ...
- Java-马士兵设计模式学习笔记-观察者模式-OOD 封装Listener
一.概述 childe类中的是关联监听者dad的,若要再增加监听者,会很不方便,且要修改代码.好的方法是封装监听者类,用addListener()方法动态添加监听者 二.代码 1.Test.java ...
- Java-马士兵设计模式学习笔记-观察者模式-OOD 封装event
把小孩醒来时的具体情况封装成事件类 Test.java class WakenUpEvent{ private long time; private String location; private ...
- Java-马士兵设计模式学习笔记-观察者模式-OOD 线程 改进
1.概述 由于上一个文章<Java OOD 线程>中的线程是父类主动监听childe,比较耗资源,现改进为childe类醒来后主动联系父类 2.代码 Test.java class Chi ...
- Java-马士兵设计模式学习笔记-总结
<马士兵设计模式学习>学习了以下模式: 1.装饰者模式(例子:水管工,木工) 2.策略模式(例子:老师用职称比大小.学生用成绩比大小) 3.简单工厂模式(例子:VechileFactory ...
- Java-马士兵设计模式学习笔记-责任链模式-模拟处理Reques Response
一.目标 1.用Filter模拟处理Request.Response 2.思路细节技巧: (1)Filter的doFilter方法改为doFilter(Request,Resopnse,FilterC ...
- Java-马士兵设计模式学习笔记-工厂模式-用Jdom模拟Spring
一.概述 1.目标:模拟Spring的Ioc 2.用到的知识点:利用jdom的xpath读取xml文件,反射 二.有如下文件: 1.applicationContext.xml <?xml ve ...
随机推荐
- PID
http://blog.gkong.com/liaochangchu_117560.ashx
- GCC编译默认的头文件搜索路径
对于c语言来说: gcc -xc -E -v - 截图: 对于c++来说: gcc -xc++ -E -v - 截图: gcc的arg和opt解释: 后面一干啥作用暂时不知道
- jquery,js引入css文件,js引入头尾
jquery,js引入css文件,js引入头尾 今天在项目中,需要把20多个页面加上头和尾部,头和尾是我写的,所以小师傅把这个工作交给我了. 我开始往里面加,先引入common.css,在body开始 ...
- Node.js 学习(三) NPM 使用介绍
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并 ...
- 用PHP向数据库中添加数据
显示页面(用户可见) <body><form action="chuli.php" method="post"> //将该页面接收的数 ...
- 【CentOS】Eclipse插件egit使用
1.简介 2.安装 3.配置 4.使用 5.补充说明 参考资料: http://yufenfei.iteye.com/blog/1750124 1.简介 EGit就是一款Eclips ...
- javascript中继承(一)-----原型链继承的个人理解
[寒暄]好久没有更新博客了,说来话长,因为我下定决心要从一个后台程序员转为Front End,其间走过了一段漫长而艰辛的时光,今天跟大家分享下自己对javascript中原型链继承的理解. 总的说来, ...
- HDU1004 Let the Balloon Rise(map的简单用法)
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- Sencha Touch xtype对应的class
Sencha Touch 2的有效xtype xtype Class ----------------- --------------------- actionsheet Ext.ActionShe ...
- PHP 路径或URL操作
echo 'documentroot:'.$_SERVER['DOCUMENT_ROOT'].'<br>'; //根目录,在apache的配置文件里定义:httpd.conf 比如:Doc ...