昨天看了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 ...