燒水器事件簿 的簡單實現

2022-03-01 06:43:24 字數 1121 閱讀 7166

昨天看了allen lee寫的一篇好文

《燒水器事件簿 [design, c#] 》

。不過由於本人學藝不精,看了好久才把握了它的工作流程。於是將他的**作了小小改動並編寫了一段測試**對它進行了乙個簡單的實現:

1.在enrollmanager.cs中的run()方法中增加了對enrollee的boil()方法的呼叫,讓整個流程動作起來,同理也對movenext()作了改動,並加了兩個writeline()顯示,新增了isprocessing屬性反映是否有有人在使用boiler,如果為真,則加信佇列的人可直接由movenext()驅動,否則就要呼叫enrollmanager的run()方法來驅動。

private

void

movenext(

object

sender, enrolleeeventargs e)

m_enrollee.watered 

-=new

enrolleeeventhandler(movenext);

run(e.boiler);

}public

void

run(boiler boiler)

2.enrollee.cs中將倒水時間設為1秒,然後加入了對done()方法的呼叫。就是假設enrolee完成倒水後就馬上告訴enrollmanager,boiler我用完了,你去分配它吧,即實現作者所說了enrollee對done()的手動呼叫。

3.boiler.cs中增加了username屬性,我覺得這很有必要,因為那些等待的人知道,現在誰在使用boil。然後將燒水的時間提高到了4秒,呵呵,為了快點看到測試結果。

4.最後就是編寫了事件模擬program.cs:

using

system;

using

system.collections.generic;

using

system.text;

using

system.threading;

using

proton;

class

test

private

static

void

enrollenrollee(enrollee e)

}

簡單的學習,實現,領域事件,事件儲存,事件溯源

自己以前都走了彎路,以為學習戰術設計就會ddd了,其實ddd的精華在戰略設計,但是對於我們菜鳥來說,學習一些技術概念也是挺好的 經常看到這些術語,概念太多,也想簡單學習一下,記憶力比較差記錄一下實現的細節1.領域事件是過去發生的與業務有關的事實,一但發生就不可更改,所以儲存事件時只能追加 3.領域事...

js自定義事件的簡單實現

在寫這段 之後,本人使用過jquery這個庫,一直對jquery的自定義事件有疑惑,就看了看jquery的原始碼,廓然開朗。jquery 實現和觸發自定義實現如下 jquery的定義方式 dom bind data change function jquery使用方式 dom trigger ini...

ram儲存器的簡單實現

1.單埠ram 讀使能有效,輸出資料,否則為高阻。module ram clk,wr en,rd en,addr,data input clk input wr en,rd en inout 7 0 data reg 7 0 mem 15 0 reg 7 0 temp assign data rd ...