MVVM

データバインディングを利用して、ViewとViewModelを連携させることで、ViewとModelを分離する手法をMVVMという。

Webアプリケーション開発者から見た、MVCとMVP、そしてMVVMの違い - Qiita

前回のデータバインディングをベースに、C++とLinuxCUIで、疑似的なMVVMを作り始めて1週間・・・。
ようやく完成したので貼っておく・・・。
今回も実装は超複雑なので割愛・・・。

実行すると、

$ g++ main.cpp view.cpp custom_view.cpp -o main
$ ./main
value_ = str1
value_ = str2
value_ = str3
binding_command_update
action start
action end
value_ = ABCDE
value_ = XYZ
value_ = ABCDEXYZ
binding_command_update
action start
action end
value_ = abc
value_ = xyz
value_ = abcxyz
$

こうなる・・・。

Sample/designpattern/mvvm/mvvm/src/mvvm at master · bg1bgst333/Sample · GitHub