00001 /* 00002 * Copyright (c) 2010 Ferruccio Vitale <unixo@devzero.it> 00003 * All rights reserved. 00004 * 00005 * $Id: white-box.h 75 2010-09-13 09:25:53Z unixo $ 00006 */ 00007 00008 #include "common.h" 00009 #include "Observer.h" 00010 #include "Observable.h" 00011 #include "User.h" 00012 00013 class TestObserver : public Observer 00014 { 00015 private: 00016 string _name; 00017 00018 public: 00019 TestObserver(string s) : _name(s) { }; 00020 00021 virtual void willChangeValueForKey(string k, Observable *) { 00022 cout << "[TestObserver::willChangeValueForKey] key: '" << k 00023 << "' observer: '" << _name << "'\n"; 00024 }; 00025 00026 virtual void didChangeValueForKey(string k, Observable *) { 00027 cout << "[TestObserver::didChangeValueForKey] key: '" << k 00028 << "' observer: '" << _name << "'\n"; 00029 }; 00030 00031 string & toString() { return _name; }; 00032 }; 00033 00034 class TestObservable : public Observable 00035 { 00036 private: 00037 string _attr; 00038 00039 public: 00040 void setKey(string &aValue) { 00041 willChangeValueForKey("attr"); 00042 cout << "[TestObservable::setKey] setting new value\n"; 00043 _attr = aValue; 00044 didChangeValueForKey("attr"); 00045 }; 00046 };