示例#1
0
 Observer(Subject *mod, int div)
 {
     model = mod;
     denom = div;
     // 4. Observers register themselves with the Subject
     model->attach(this);
 }
示例#2
0
static int tolua_CCGUI_Subject_attach00(lua_State* tolua_S)
{
#ifndef TOLUA_RELEASE
 tolua_Error tolua_err;
 if (
     !tolua_isusertype(tolua_S,1,"Subject",0,&tolua_err) ||
     (tolua_isvaluenil(tolua_S,2,&tolua_err) || !tolua_isusertype(tolua_S,2,"LUA_FUNCTION",0,&tolua_err)) ||
     !tolua_isnoobj(tolua_S,3,&tolua_err)
 )
  goto tolua_lerror;
 else
#endif
 {
  Subject* self = (Subject*)  tolua_tousertype(tolua_S,1,0);
  LUA_FUNCTION handler = *((LUA_FUNCTION*)  tolua_tousertype(tolua_S,2,0));
#ifndef TOLUA_RELEASE
  if (!self) tolua_error(tolua_S,"invalid 'self' in function 'attach'", NULL);
#endif
  {
   self->attach(handler);
  }
 }
 return 0;
#ifndef TOLUA_RELEASE
 tolua_lerror:
 tolua_error(tolua_S,"#ferror in function 'attach'.",&tolua_err);
 return 0;
#endif
}
示例#3
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;
}
int main()
{
    ObserverB ob;
    ObserverA oa;

    Subject sub;
    sub.attach(&ob);
    sub.attach(&oa);
    //Notify All
    sub.NotifyAll();

    //detach ObserverA
    sub.detach(&oa);
    //Notify All
    sub.NotifyAll();


    return 0;
}
示例#5
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;
}
示例#6
0
	Observer(Subject* mod, int div){
		model = mod;
		denom = div;

		model->attach(this);
	}