読んだ:iOS/Androidアプリの3つの大事な設計方針
こちらのスライドのまとめです。
Modelとそれ以外を分ける
- Modelとそれ以外(ここではEditor)に分ける。
- ModelはUIに関わらない部分
- EditorはUIに関わる部分
- 参照
- OK:Editor -> Model の直接参照
- NG:Model -> Editor の直接参照
- ModelからEditorを参照する場合はObserverパターンなどを使う。
- Modelはいつどんな指示を受けても問題を起こさない振る舞いが求められる。クライアントの指示通りに動作するわけではない。
Objectのライフサイクルと参照関係の整理をしよう
- 各オブジェクトがどういうライフサイクルにすべきか考え、参照関係を設計する。
- EditorからModelの参照は注意が必要。Editorはユーザ操作で何度でも生成されるがそれと同期してModelが作られて良いか。Modelの作成の度にネットワーク通信などをしている場合は注意が必要。
非同期制御でState Machineを活⽤しよう
- ViewControllerはUIや通信処理など、いろいろなEventを処理する必要がある。
- あるEventの処理は他のEventの状態に依存することが多い。
- 従って、ViewController全体で共有するオブジェクトが必要で、State Machineがお勧め。
- State Machineの役割は大きく2つ。
- Eventを受け付けて状態を遷移
- 遷移時にActionを呼び出す
- State Machineの実装は大変なので、状態遷移図などを書いて自動生成するのがお勧め。
以上です。