今回は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 件のコメント :
コメントを投稿