一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

0. 目錄

  • 1. 燒水器事件
  • 2. 關(guān)于 PROTON
  • 3. BOILER
  • 4. ENROLLEE
  • 5. ENROLLEEQUEUE
  • 6. ENROLLEEMANAGER
  • 7. 關(guān)于設(shè)計(jì)

 

1. 燒水器事件

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

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

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

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

 

2. 關(guān)于 PROTON

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

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

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

 

3. BOILER

3.1 開始燒水...

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

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

于是,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知識(shí)庫燒水器事件簿 [Design, C#],轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 2021最新久久久视精品爱 | 色婷婷综合和线在线 | 日韩激情中文字幕 | 国产精品免费视频播放 | 一区二区在线视频观看 | 加勒比一区二区 | 国产在线一区二区三区欧美 | 久久极品视频 | 国产对白在线播放九色 | 国产亚洲一级精品久久 | 国产原创麻豆精品视频 | 香蕉久久夜色精品国产2020 | 女的毛片毛片毛毛片毛毛毛毛片 | 最新国产一区二区精品久久 | 中文字幕精品视频在线 | 美女骚网站 | 久久综合久久鬼色 | 国产成人综合网在线播放 | 久久国产网 | 91小视频在线播放 | 级毛片久久久毛片精品毛片 | 色无极影院亚洲 | 加勒比伊人 | 久久一区二区三区免费 | 色哟哟在线观看精品大全视频 | 91精品国产综合久久精品 | 国产亚洲视频网站 | 精品成人乱色一区二区 | 国产精品综合在线 | 日本乱人伦片中文字幕三区 | 91国内精品在线 | 久久婷婷激情综合色综合也去 | 亚洲一区二区在线视频 | 青草视频.com | 成人信息集中地 | 美女扒开双腿让男人爽透视频 | 亚洲国产成人在人网站天堂 | 免费伦费一区二区三区四区 | 亚洲欧美色一区二区三区 | 深爱激情五月婷婷 | 精品国精品自拍自在线 |