设计模式面试与笔试题剖析(二)
2012-04-05 23:20
369 查看
某知名IT企业笔试题:
程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。 要求: (1) 要有联动性,老鼠和主人的行为是被动的; (2) 考虑可扩展性,猫的叫声可能引起其他联动效应。 |
本题可使用观察者模式,参考类图如下所示:
参考代码如下:
import java.util.*; interface Subject //抽象主题 { public void addObserver(Observer obs); public void cry(); } interface Observer //抽象观察者 { public void response(); } class Cat implements Subject //具体主题 { private ArrayList<Observer> list; public Cat() { list = new ArrayList<Observer>(); } public void addObserver(Observer obs) { list.add(obs); } public void cry() { System.out.println("猫大叫一声!"); for(Object obj : list) { ((Observer)obj).response(); } } } class Mouse implements Observer //具体观察者 { private String name; public Mouse(String name, Subject subject) { this.name = name; subject.addObserver(this); } public void response() { System.out.println(this.name + "拼命逃跑!"); } } class Master implements Observer //具体观察者 { private String name; public Master(String name, Subject subject) { this.name = name; subject.addObserver(this); } public void response() { System.out.println(this.name + "从美梦中惊醒!"); } } class Client //客户端测试类 { public static void main(String args[]) { Subject cat = new Cat(); Observer mouse1,mouse2,master; mouse1 = new Mouse("大老鼠",cat); mouse2 = new Mouse("小老鼠",cat); master = new Master("小龙女",cat); cat.cry(); } } //输出结果如下: //猫大叫一声! //大老鼠拼命逃跑! //小老鼠拼命逃跑! //小龙女从美梦中惊醒!
【作者:刘伟 http://blog.csdn.net/lovelion】
相关文章推荐
- 设计模式面试与笔试题剖析(三)
- 设计模式面试与笔试题剖析(一)
- 面试笔试重点总结:操作系统、计算机网络、设计模式
- 【附加题】《Java170道面试笔试题全面含答案》涉及java/数据库/框架/系统/设计模式相关
- 笔试面试---设计模式&软件测试&软件工程
- 笔试面试---设计模式&软件测试&软件工程
- java笔试+面试总结——设计模式篇
- 面试笔试重点总结:操作系统、计算机网络、设计模式
- 面试+笔试之设计模式
- 面试笔试重点总结:操作系统、计算机网络、设计模式
- 面试笔试重点总结:操作系统、计算机网络、设计模式
- 面试笔试重点总结:操作系统、计算机网络、设计模式
- 设计模式C++学习笔记之十一(c/c++面试笔试题)
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- 设计模式之单例模式面试总结
- 面试之设计模式
- 【设计模式之一:单例模式(二)】JAVA 单例模式完全剖析
- 【面试必读(编程基础)】几种常用的设计模式介绍
- 面试复习重点——基础篇:操作系统、计算机网络、设计模式【山科大牛陈磊整理】
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结