設計模式面試與筆試題剖析(二)
某知名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】
相關文章
- 設計模式面試與筆試題剖析(三)設計模式面試筆試
- 雲端計算面試題筆試錦集,雲端計算實用面試題答案二面試題筆試
- 程式設計師進階之路之面試題與筆試題集錦(三)線上程式設計題程式設計師面試題筆試
- 程式設計師進階之路之面試題與筆試題集錦(一)程式設計師面試題筆試
- 【設計模式筆記】(二)- Builder模式設計模式筆記UI
- 【Java面試】Java設計模式面試題!Java設計模式面試題
- 前端面試&筆試&錯題指南(二)前端面試筆試
- C/C++ 程式設計員應聘常見面試試題深入剖析C++程式設計面試
- 新書出版 |《資料庫程式設計師面試筆試真題與解析》新書資料庫程式設計師面試筆試
- [面試專題]JS設計模式面試JS設計模式
- 設計模式常見面試題設計模式面試題
- HTML最新面試題(筆試面試題)HTML面試題筆試
- 筆試題目——程式設計題筆試程式設計
- 圖解Java設計模式-面試題圖解Java設計模式面試題
- Scala 與設計模式(二):Builder 建立者模式設計模式UI
- 測試面試問題(二)面試
- 活動:送兩本《PHP 程式設計師面試筆試真題解析》PHP程式設計師面試筆試
- Python 筆試 面試題Python筆試面試題
- 雲端計算面試題筆試錦集,雲端計算實用面試題答案一面試題筆試
- 20個設計模式和軟體設計面試問題設計模式面試
- 前端筆試題面試題記錄前端筆試面試題
- 新書出版 |《資料庫程式設計師面試筆試真題庫》新書資料庫程式設計師面試筆試
- 12個程式設計師筆試面試寶典程式設計師筆試面試
- 設計模式面試 - Hamill設計模式面試
- 影像處理筆試面試題筆試面試題
- 面試、筆試提問問題面試筆試
- mybatis常見面試/筆試題MyBatis面試筆試
- Oracle面試、筆試常見題Oracle面試筆試
- Mysql中的筆試和麵試---常見面試題問與答MySql筆試面試題
- 前端筆試題面試題記錄(下)前端筆試面試題
- 【編碼】-360實習筆試程式設計題(二)-2016.03.29筆試程式設計
- 23種設計模式(二)---策略設計模式設計模式
- 設計模式這話題,我面試又被問了設計模式面試
- Java設計模式學習筆記(二) 簡單工廠模式Java設計模式筆記
- 最新SS園設計模式例項剖析與深入解讀教程設計模式
- 記一次面試筆試題面試筆試
- 【轉】C++ 筆試面試題目C++筆試面試題
- 作業系統筆試、面試題作業系統筆試面試題