Bilgee Zulgalt

诚实地面对自己的内心,你就会产生无穷的力量,这就是萨满。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在教学过程中,面向对象教学结束后,非常经典的一个总结实现就是来自IBM的面试题,具体内容为:

猫叫了,所有老鼠都跑了,主人醒了。要求以观察者模式实现。

观察者
1 public interface Obeserver {
2 public void action();
3 }
主题
1 public interface Subject {
2 public void add(Obeserver ob);
3 }
主人
 1 public class Master implements Obeserver {
2
3 public Master(Subject sub) {
4 sub.add(this);
5 }
6
7 @Override
8 public void action() {
9 System.out.println("主人醒了。");
10
11 }
12
13 }
老鼠
 1 public class Mouse implements Obeserver {
2
3 private String name;
4
5 public String getName() {
6 return name;
7 }
8
9 public void setName(String name) {
10 this.name = name;
11 }
12
13 public Mouse(Subject sub,String name) {
14 this.setName(name);
15 sub.add(this);
16 }
17
18 @Override
19 public void action() {
20 System.out.println("老鼠" + this.getName() + "跑了。");
21
22 }
23
24 }
 1 import java.util.ArrayList;
2 import java.util.List;
3
4
5 public class Cat implements Subject {
6
7 private List<Obeserver> list = new ArrayList<Obeserver>();
8
9 @Override
10 public void add(Obeserver ob) {
11 list.add(ob);
12
13 }
14
15 public void cry() {
16 System.out.println("猫叫了。");
17 for(Obeserver o : list) {
18 o.action();
19 }
20 }
21
22 }
测试
1 public class Test {
2 public static void main(String[] args) {
3 Cat sub = new Cat();
4 Master oa = new Master(sub);
5 Mouse ob = new Mouse(sub, "甲");
6 Mouse oc = new Mouse(sub, "乙");
7 sub.cry();
8 }
9 }








 

 

posted on 2012-03-16 11:19  Bilgee  阅读(273)  评论(0编辑  收藏  举报