Posted on 2009-04-06 18:00
S.l.e!ep.¢% 閱讀(1822)
評(píng)論(3) 編輯 收藏 引用 所屬分類:
Design Pattern
與其說(shuō)“也談”
事實(shí)上就是看完,
設(shè)計(jì)模式之Observer模式?的讀后感
?大概就是“人云亦云”的意思
在過(guò)去的代碼中,大概也就只粗略地用了 工廠跟Observer 了
書(shū)上和網(wǎng)上的例子看不過(guò)少,但實(shí)際用起來(lái)才發(fā)現(xiàn)不是那么回事
void?notify(AccountArgs?args)
?{
????????for(list<IObserver*>::iterator?itr?=?observerList.begin();itr!=observerList.end();itr++)
?????? {
?????????????(*itr)->Update(args);
???????}
}
在應(yīng)用中可能有n個(gè)參數(shù)
???? 那么會(huì)有 n 個(gè) notify版本
??? void?notify(AccountArgs?args1);
??? void?notify(AccountArgs?args1, AccountArgs?args2);
??? ……
見(jiàn)到有人把參數(shù)又定義成了一個(gè)個(gè)結(jié)構(gòu), 也有人用了模板函數(shù)來(lái)調(diào)用……
????????for(list<IObserver*>::iterator?itr?=?observerList.begin();itr!=observerList.end();itr++)
?????? {
?????????????(*itr)->Update(args);
???????}
這個(gè)循環(huán)是阻塞的,如果你沒(méi)異步實(shí)現(xiàn)的話,
如果是一個(gè)服務(wù)器程序,如果是阻塞的,效率很低