示例#1
0
int main(int argc, char** argv) {
	Subject subject;

	subject.addObserver(ObserverObject(new Observer(1)));
	subject.addObserver(ObserverObject(new Observer(2)));
	subject.addObserver(ObserverObject(new Observer(3)));
	subject.addObserver(ObserverObject(new Observer(4)));
	subject.addObserver(ObserverObject(new Observer(5)));

	subject.changeSubject();

	std::this_thread::sleep_for(std::chrono::seconds(1));
	return 0;
}
int main(int argc, char **argv) {

	printf("\n\nBEGIN OF PROGRAM\n\n");

	Physics physics;
	Unit unit("foo");

	AudioObserver audioObserver;
	GraphicsObserver graphicsObserver;
	Observer baseObserver;

	Subject base = Subject::base();

	base.addObserver(&audioObserver);
	base.addObserver(&audioObserver);

	physics.subject()->addObserver(&audioObserver);
	physics.subject()->addObserver(&graphicsObserver);
	physics.subject()->addObserver(&baseObserver);

	for (unsigned int i = 0; i < 6; i++) {
		physics.updateUnit(unit);

		if (i == 3) {
			physics.subject()->removeObserver(&baseObserver);
			printf("#INFO: Base Observer removed\n");
		}
	}

	printf("\n\nEND OF PROGRAM\n");
}