设计模式面试与笔试题剖析(二)
来源:互联网 发布:中广电网络机顶盒 编辑:程序博客网 时间:2024/06/06 12:49
某知名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】
- 设计模式面试与笔试题剖析(二)
- 设计模式面试与笔试题剖析(一)
- 设计模式面试与笔试题剖析(三)
- java 面试 笔试题 大全 (二)
- 2013百度笔试面试剖析(连载)
- 笔试面试---设计模式&软件测试&软件工程
- 【笔试/面试】排列组合与概率计算(二)
- PureMVC(AS3)剖析:设计模式(二)
- 笔试面试总结(二)
- 运用面向对象的分析与设计模式巧解面试算法(二)
- 设计模式笔试题
- 设计模式 笔试题
- linux知识笔试与面试宝典(二)
- 【设计模式之一:单例模式(二)】JAVA 单例模式完全剖析
- 深度剖析程序员面试笔试
- 笔试题-设计模式-设计模式分类
- 算法笔试面试高频题之二-(排序算法)
- 设计模式与足球(二)
- Spring的配置文件applicationContext.xml中的 <context:component-scan base-package="com.orm" />
- VC++菜单编程
- dwr3实现消息精确推送详细步骤
- DUiLib 源码分析——第一篇UIManager
- 重温控制反转和依赖注入
- 设计模式面试与笔试题剖析(二)
- 从JAR文件中读取文件
- 超越默认splitviewcontroller功能的MGSpliatviewController
- 一个程序员社区 stackenqueue.com
- DUiLib 源码分析——第二篇UIBase
- oracle rowid说明
- VIM 参考手册
- JPA Useful Websites
- C#子窗口调用父窗口控件的委托实现