Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

プレゼンタに加えてドメイン層を入れる

プレゼンタを導入した後は今回はさらにドメイン層(UseCase)を取り入れたい。

プレゼンタ

プレゼンタはUseCaseにまとめられた処理を用いてビューないしUseCaseからの返事を処理する。

ユースケース

UseCaseはビジネスロジックを記述するところでそれのみで単体テストできるもの。

アイコンの表示云々のロジックはビジネス層でデータ層のモデル(エンティティ)をアイコン表示するしない情報(これがビューモデル)に変換して(この部分をtranslatorとして切り出すのも可能)プレゼンタに返す。
プレゼンタはビューにビューモデルを渡す。
ビューはビューモデルの指示通りにビューを更新する。
各境界はプロトコルを用いてやりとりする。(このプロトコルを介するのがポイント、逆にプロトコルの設計次第でうまくいくかが変わりそう。)

導入として

1. プレゼンタが行う処理をユースケースに委譲
2. ユースケースはビューモデルを作りプレゼンタに返す。ビューモデルに変換する部分はトランスケーターとして切り出す。
3. 受け取ったビューモデルはビューに渡す。
4. ビューはビューモデルの支持通りに書き換える。
5. これらのやりとりは全てプロトコル(インターフェース)を介して行うようにする。

ユースケースつまりビジネスロジック部分はUIともデータ層(ネットワーク、外部フレームワーク)とも分離され、単体テストにかけることができる。アイコンの出しわけロジック、購入処理、ログイン処理などは全てユースケースとして分離される。