Win APIでならこんな感じでコントローラーを実現したなぁ。

HWND window = CreateWindowEx(・・・);
Binder binder( window ); // CallbackをフックしてObserverに委譲するバインダー
CloseController control( window ); // 引数で受け取ったWindowを閉じるコントローラー
binder[WM_LBUTTONDOWN] += &control; // WM_LBUTONDOWNイベントにコントローラーを登録