[iOS] iOSアプリケーションの設計を考える 3

今回はCleanArchitectureについてです。 CleanArchitectureはMVPとかのパターンとは違ってもっと上位の設計思想的な印象を受けました。 アプリケーションを4つのコンポーネントに分けるパターンです。 | 項目 | 説明 | |----------------------------|-------------------------------------------------------------------------------| | Entity | アプリケーションに依存しないデータ構造やビジネスロジック | | Use Case | アプリケーションで固有なロジック。Entityを使う | | インターフェースアダプター | Presenter, Controller。 UseCaseの入出力ポートを外側の何に接続するかを決定する | | フレームワーク・ドライバー | UI, DB, WebAPI, BLE通信など | 構成要素については有名なドーナツみたいな図があるので、ググって見てみてください。 ポイントとしては、EntityはUseCaseを知らない。 UseCaseはインターフェースアダプターを知らない。といったように抽象化していく点です。 上手く階層ごとに分けることで、テスト可能にしていきます。(やはりここでもテストが大切) 下位の層が上位の層を参照する場合には、依存性逆転の原則を使います。(protocolを上手く使います) ## 所感 - Presenterなどにoutputを設定するのを忘れそう。(設定し忘れると動かないのですぐわかりますが...) - MVPとの親和性が高い(より抽象度をあげることが可能になる) - それぞれのクラスのテストがしやすそう - クラスや役割が多いので、煩雑に感じる ワンランク上の設計を取り入れたい場合は良さそうです。 特に、他のプラットフォームに移植を考える場合はEntityをそのまま持っていけるので有効です。 次回は画面遷移のパターンについてです。 ## サンプルコード サンプルコードはこちらです。 - [Github](https://github.com/k28/ios_design_pattern)

0 件のコメント :

コメントを投稿