-

- 加为好友
- 发送私信
- 在线聊天
|
| 发表于:2008-08-20 11:28:401楼 得分:0 |
其实找到男朋友或是分手,这从事件模型上来看,也就是给事件源添加或注销事件监听对象。在JAVA的AWT事件模型里,事件源发起事件,事件监听者接收到发出的事件对象,并做相应的处理。而本文中呢,则是事件源女孩(Girl)向她的男朋友事件监听对象(HandSome)发起情感事件(EmotionEvent),她男朋友(HandSome)作为事件监听对象(EmotionListener),应该响应事件源(Girl)发起的事件对象(情感事件-EmotionEvent)。Gril是如何向她的男朋友发起事件的呢? - Java code
1public void fire() {
2//女孩自己就是事件发起者,也就是事件源
3 EmotionEvent e = new EmotionEvent(this);
4 for ( EmotionListener lis : boyFriends) {
5 lis.whatCanIdoWhenGirlHappy( e );
6 lis.whatCanIdoWhenGirlSad( e );
7 }
8}
- Java code
1package DesignPattern.Observer;
2
3import java.util.ArrayList;
4import java.util.List;
5
6/** *//**
7 *事件发起者--事件源
8 */
9public class Girl {
10
11 public Girl(String name) {
12 super();
13 this.name = name;
14 }
15 private String name;
16 public String getName() {
17 return name;
18 }
19
20 List<EmotionListener> boyFriends=new ArrayList<EmotionListener>();
21
22 /** *//**
23 * 女孩找到男朋友了---是谁?张三吗?还是李四?
24 * @param listener--事件监听对象
25 */
26 public void addEmotionListener(EmotionListener listener){
27 this.boyFriends.add(listener);
28 HandSome hs=(HandSome)listener;
29 System.out.println(name+"说:好高兴,我找到男朋友了,他叫:" + hs.getName() + ".");
30 }
31
32 /** *//**
33 * 女孩失恋了.
34 * @param listener
35 */
36 public void removeEmotionListener(EmotionListener listener){
37 this.boyFriends.remove(listener);
38 HandSome hs=(HandSome)listener;
39 System.out.println(name+" 说:亲爱的" + hs.getName() + ",我不能没有你,请不要离开我!!");
40 }
41
42 public void fire() {
43 //女孩自己就是事件发起者,也就是事件源
44 EmotionEvent e = new EmotionEvent(this);
45 for ( EmotionListener lis : boyFriends) {
46 lis.whatCanIdoWhenGirlHappy( e );
47 lis.whatCanIdoWhenGirlSad( e );
48 }
49 }
50}
女孩自己就是事件发起者,也就是事件源,通过调用监听对象的方法把自己的信息(情感事件EmotionEvent)传递到心爱的男朋友处,接下来我们就来看看他们两的浪漫爱情故事吧! - Java code
1public class TestObserver {
2 public static void main(String[] args) {
3
4 //创建事件源对象--“宝贝”
5 Girl g = new Girl("宝贝");
6 //创建事件监听对象
7 EmotionListener listener = new HandSome("张三");
8 //将响应者注册到事件源
9 //(将上面创建的帅哥(“张三”)设定为叫“宝贝”的这个美女的男朋友)
10 g.addEmotionListener(listener);
11 g.fire();
12 }
13}
[code=浪漫的事] 宝贝说:好高兴,我找到男朋友了,他叫:张三. 张三说:宝贝,你高兴, 我也很高兴!!! 张三说:宝贝,你不高兴, 我也会不高兴的。宝贝,甭怕,你不高兴的时候我会逗你开心的。 [/code] 几个月后,他们的感情发生了问题,所谓的日久生情,日久也生疏。张三为了爱情的延续,以后的家庭生活,每天早出晚归的工作。两个人的感情淡了,正在这个时候,暗恋"宝贝"许久的 “周末”行动了,他假如了宝贝和张三的生活,成为了第三者,在宝贝的生活里就有了两个男人,而对她都是一样的好。 - Java code
1public class TestObserver {
2 public static void main(String[] args) {
3
4 //创建事件源对象--“宝贝”
5 Girl g = new Girl("宝贝");
6 //创建事件监听对象
7 EmotionListener listener = new HandSome("张三");
8 //将响应者注册到事件源
9 //(将上面创建的帅哥(“张三”)设定为叫“宝贝”的这个美女的男朋友)
10 g.addEmotionListener(listener);
11 //第三者加入
12 EmotionListener lis = new HandSome("周末");
13 g.addEmotionListener(lis);
14 g.fire();
15 }
16}
[code=浪漫的事] 宝贝说:好高兴,我找到男朋友了,他叫:张三. 宝贝说:好高兴,我找到男朋友了,他叫:周末. 张三说:宝贝,你高兴, 我也很高兴!!! 张三说:宝贝,你不高兴, 我也会不高兴的。宝贝,甭怕,你不高兴的时候我会逗你开心的。 周末说:宝贝,你高兴, 我也很高兴!!! 周末说:宝贝,你不高兴, 我也会不高兴的。宝贝,甭怕,你不高兴的时候我会逗你开心的。 [/code] 我真的很佩服,帅哥就是帅哥,说话都是一样,完全是从一个模型里套出来的。哎,看来我要学的还真多啊。说到这里,想想我的老同学张三啊,命苦啊,为了爱情整天忙碌的工作得到的确是冷落了心爱的“宝贝”,造成了第三者的加入,这时已是后悔...."这一切都是我错了,冷落了人家,或许也不是我的错,是她花心吧。不管怎样,她都接受别人了我还能???" 张三说:最后做出决定,离开他的“宝贝”: - Java code
1//这个善良的张三见女孩子多了好象开始花心了
2//或许是应该张三冷落了他才会引起第三者的加入
3//张三很后悔,决定离开了他的"宝贝"
4 g.removeEmotionListener(listener);
当张三离开后,宝贝好象也后悔了,不想张三离开他: [code=哎,爱情总是这样,拥有的时候不好好珍惜,直到失去后才后悔莫及,人世间的......] 宝贝 说:亲爱的张三,我不能没有你,请不要离开我!! [/code] 总上所述,其实我们已经演绎了一个面向对象的设计模式--观察者模式,事件模型就是观察者模式的一种体现。本文只是趣味性的简单解说了一下事件模型的实现过程,要深入学习面向对象设计模式请查看相关书籍或资料。 哎,原本浪漫的爱情故事最终却......,惭愧啊!我们帅气的张三现在会做什么?会不会因为"宝贝"的请求又回到她身边呢?还是彻底忘去旧爱,开始新的生活? | | |
修改
删除
举报
引用
回复
| |