ViewとModelの関係だよ

ViewはModelにコマンドメッセージを送る、Modelはメッセージを解釈して内部状態に作用する(メッセージを無効な命令として破棄してもよい)
内部状態が変化したら変化した内容を逐一イベントメッセージとしてすべてのViewに送る
Viewがイベントメッセージを受け取ったらViewはそれを解釈して独自の方法でプレゼンテーションする

Modelを継承してGameStateを作る(これはわかりやすいだろう)
Viewを継承してユーザーインターフェースを作る
ユーザーインターフェースはOS固有の入力(DirectInput、ウィンドウメッセージ、などなど)を受け取りゲーム専用のコマンドメッセージに変換して送る
Viewを継承してAIを作る
AIは独自のアルゴリズムによって意思決定し、コマンドメッセージを生成してゲームに送信する

メインループはフレームレートを調整しながらModelと全てのViewのUpdateメソッドを呼び続けるだけの非常にシンプルな構成になる