static int tolua_CCGUI_Subject_notify00(lua_State* tolua_S) { #ifndef TOLUA_RELEASE tolua_Error tolua_err; if ( !tolua_isusertype(tolua_S,1,"Subject",0,&tolua_err) || !tolua_isnoobj(tolua_S,2,&tolua_err) ) goto tolua_lerror; else #endif { Subject* self = (Subject*) tolua_tousertype(tolua_S,1,0); #ifndef TOLUA_RELEASE if (!self) tolua_error(tolua_S,"invalid 'self' in function 'notify'", NULL); #endif { self->notify(); } } return 0; #ifndef TOLUA_RELEASE tolua_lerror: tolua_error(tolua_S,"#ferror in function 'notify'.",&tolua_err); return 0; #endif }
void clientObserver() { cout << "Observer\n"; Subject* subject = new Subject; Observer* dp[] = { new Observer1, new Observer2, new Observer3}; for(size_t i=0; i<COUNT(dp); i++) { subject->attach(dp[i]); dp[i]->link(subject); } subject->notify(); cout << endl; }
int main(int argc, char *argv[]) { Subject * subject = new ConcreteSubject(); Obeserver * objA = new ConcreteObeserver("A"); Obeserver * objB = new ConcreteObeserver("B"); subject->attach(objA); subject->attach(objB); subject->setState(1); subject->notify(); cout << "--------------------" << endl; subject->detach(objB); subject->setState(2); subject->notify(); delete subject; delete objA; delete objB; return 0; }
int main() { LOGT("=====TestSubject====="); Subject<int> observee; A observerA; B observerB; D observerD; F observerF; Delegate<void, int> d[6]; d[0] = Delegate<void, int>(foo); d[1] = Delegate<void, int>(observerA, &A::foo); d[2] = Delegate<void, int>(observerB, &B::foo); d[3] = Delegate<void, int>(observerD, &D::foo); d[4] = Delegate<void, int>(E::foo); d[5] = Delegate<void, int>(observerF, &F::foo); for (int i = 0; i < 6; ++i) observee.add(&d[i]); observee.notify(101); LOGT("=====TestObserver====="); Store storeA('A'); Store storeB('B'); Store storeC('C'); Price price; price.add(&storeA); price.add(&storeB); price.add(&storeC); price.notify(); return 0; }