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