MVC で作る
#Flutter
Flutter設計パターンの輪読会メモ
ページ
https://zenn.dev/flutteruniv/books/flutter-architecture/viewer/2_mvc
MVCとは
Model: アプリケーションの振る舞いを表現するもの。View と Controller 以外のすべてのモジュールが該当する
ビジネスロジックとは「アプリケーションの固有の仕様を実現するもの」
コアな処理
処理の流れ
View: ディスプレイに表示される見た目
Controller: ユーザーによる操作を解釈して Model を操作したり、モデルを UI に反映させたりするもの
ビジネスロジック
Larvelでどこに書くのか
MVCS Serviceで書いてる。
https://www.w2solution.co.jp/corporate/tech/mvc-sについて軽く触れる/
MVCをFlutter に適用するbeeeyan.icon
Controller
Flutterにおいては「Notifier」と私は呼んでいるbeeeyan.icon
Notifier : 通知
変化を「コントロール」すると捉えるか、変化が「通知される」と捉えるか。
Spring Frameworkをやっていたときは「View」と「Model」の橋渡しとして解釈していた。
Model
Flutter フレームワークに大きく依存しますが、Model は Flutter フレームワークや環境にできるだけ依存しないように記述して、ユニットテストを可能にする方針が望ましい
私的にはすごいこと言うな、と言うイメージbeeeyan.icon
他のクラスのインスタンスに依存する場合には、コンストラクタインジェクションで依存性を注入するのが通例
【DI】依存の書き換えハンズオンが生きていると嬉しい。
UI = f(state)
めっちゃ端的でわかりやすい式なので、みんなすぐ出るようにしてほしいbeeeyan.icon
MVCと比べると、UI = V・f = C・state =M(一部fもありそう)であってる??
無理に当てはめるものでもない印象ではあるbeeeyan.icon
code:model.dart
/// カウント値のリストの合計を計算する。
int calculateTotal() {
return _counts.fold(0, (a, b) => a + b);
}
foldとかすぐに思いつかないタイプですbeeeyan.icon