天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

燒水器事件簿 [Design, C#]

0. 目錄

  • 1. 燒水器事件
  • 2. 關于 PROTON
  • 3. BOILER
  • 4. ENROLLEE
  • 5. ENROLLEEQUEUE
  • 6. ENROLLEEMANAGER
  • 7. 關于設計

 

1. 燒水器事件

Paul是某公司某部門的員工,該部門的員工都是入住員工宿舍的。員工宿舍提供開水的地方和他們所住的地方相隔較遠,于是他們湊錢買了個燒水器,但最近這個燒水器壞了。Paul 打算動員大家再湊錢買一個新的,可大家愛理不理、得過且過的,搞到這幾天大家都在樓下的小賣部買礦泉水喝。Paul和同宿舍的幾個人商量了,打算就這幾個人湊錢買一個燒水器,但東西買回來后,其他人肯定會趁機拿來用,不讓其他人用是不可能的,于是,Paul他們打算出臺一些規(guī)定來維護“股東”們的權益。

以下是他們即將出臺的使用燒水器的排隊規(guī)則:

  • 1) Paul、Henry、Chris 和 MC 四個人湊錢買了這個新的燒水器,他們是“股東”;
  • 2) 當原隊列只有“股東”時,后加入的“股東”將排在隊列末尾,而后加入的“非股東”也將排在隊列末尾;
  • 3) 當原隊列只有“非股東”并且第一個“非股東”正在使用燒水器燒水時,后加入的“股東”將插入正在使用燒水器的“非股東”后面、第一個正在等候燒水器的“非股東”前面,而后加入的“非股東”將排在隊列末尾;
  • 4) 當原隊列既有“股東”又有“非股東”時,后加入的“股東”將會插在隊列中最后一個“股東”后面、第一個正在等候燒水器的“非股東”前面。

規(guī)則里面的條款明顯體現(xiàn)了“股東”們的優(yōu)先使用權。由于大家都有自己的電腦,于是 Paul 他們打算開發(fā)一個小型系統(tǒng)管理隊列。透過這個系統(tǒng),大家都能看到隊列當前的狀況。當上一個員工用完燒水器后,系統(tǒng)會通知下一個正在等候的員工。

 

2. 關于 PROTON

Proton 是 Paul 他們四個打算開發(fā)的用于管理隊列的小型系統(tǒng)的開發(fā)代號。Proton 包括以下幾個核心類:

  • 1) BOILER:從管理學的角度來看,可供分配和使用的資源永遠是稀缺的、不足的,也正因為這種稀缺和不足,人們才需要通過管理務求使得這些資源能夠發(fā)揮最大的效益。然而,資源使用后所發(fā)揮的效益的獲益者是有偏向性的。在這起燒水器事件中,燒水器就是這一稀缺的資源,而它的使用效益是應該偏向于集資的“股東”們。Boiler 就代表了這個燒水器。
  • 2) ENROLLEE:Enrollee 代表著與燒水器事件有關的員工,包括“股東”和“非股東”。Proton 的存在意味著資源的收益的分配是不平均的,于是 Enrollee 的設計必須能夠體現(xiàn)出“股東”和“非股東”的區(qū)別。
  • 3) ENROLLEEQUEUE:為了維護“股東”們的權益,Paul 他們訂立了一系列的排隊規(guī)則。EnrolleeQueue 是一個集合類,提供了必要的接口用于隊列操作,它的內(nèi)部邏輯必須體現(xiàn)出 Paul 他們訂立的排隊規(guī)則。
  • 4) ENROLLEEMANAGER:EnrolleeManager 是 Proton 的后方邏輯負責人,它負責要使用燒水器(Boiler)的員工(Enrollee)的注冊和注銷、使用排隊規(guī)則(EnrolleeQueue)來管理等候隊列、處理燒水器(Boiler)的分配等。

本文將只討論 Proton 的后方邏輯的設計與實現(xiàn),并且重點放在上面所提到的4個核心類中。

 

3. BOILER

3.1 開始燒水...

一個普通的燒水器,無論是用煤氣還是用電的,都必定具備燒水的功能,否則就只能當作裝飾品了。當你打開煤氣爐或者通電后,燒水器就會正式開始燒水了。這里,Enrollee 是通過 Boiler 的 Boil 方法讓燒水器開始工作。

現(xiàn)實中的燒水器不會知道更不會記錄自己所在的位置,但因為 Proton 在通知下一個使用者的時候必須告訴他到什么地方拿燒水器,于是我為燒水器加入一個 Location 屬性指示其當前所在之處。

于是,Boiler.Boil 方法和 Boiler.Location 屬性的代碼可以這樣寫:

// Code #01

private string m_Location;
public string Location
{
    
get return m_Location; }
    
internal set { m_Location = value; }
}


public void Boil()
{
    Console.WriteLine(
"Boiling at Room {0}...", m_Location);
}

it知識庫燒水器事件簿 [Design, C#],轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 午夜伦理yy44008影院 | 良家人妻无码专区九色颜射 | 久久国产精品久久国产精品 | 午夜在线观看免费观看 视频 | ppypp午夜限制不卡影院私人 | 空姐厕所啪啪啪 | 久久偷拍国2017的 | 樱花动漫成人隐藏入口 | 中文无码字慕在线观看 | 一个人免费观看HD完整版 | 在线观看免费亚洲 | 浴室里强摁做开腿呻吟的漫画 | 亚洲成人在线免费观看 | 久久视频在线视频观品15 | 久久亚洲午夜牛牛影视 | 奶大B紧17p | 亚洲乱码AV久久久久久久 | 精品亚洲一区二区三区在线播放 | 国语92电影网午夜福利 | 欧美18videosex| 国产精品人妻无码99999 | 免费人成在线观看网站视频 | 粉嫩无套白浆第一次jk | 国产三级精品三级男人的天堂 | gogogo高清在线观看 | 一个人在线观看免费高清视频 | 色色色999 | 久久视热频国只有精品 | 免费成年人在线视频 | 欧美动物交ideos | 麻豆影视在线直播观看免费 | 国产精品-区区久久久狼 | 办公室中文BD | 日本无码人妻精品一区二区视频 | 涩涩电影网 | 色哦色哦哦色天天综合 | 一个人的HD高清在线观看 | 日本精品久久久久中文字幕2 | ebc5恐怖5a26房间 | 日本午夜福利无码高清 | av淘宝 在线观看 |