示例#1
0
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
}
示例#2
0
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;
}
示例#3
0
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;
}
示例#4
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;
}