MVP + Clean Architecture における DI 設計の一案
MVP + Clean Architecture っぽいプロジェクトで各レイヤーの依存関係を、 DI コンテナである dagger2 で表現する一案の備忘録。
結論
- クラス数が多くなる。あまり現実的じゃない。
- 結局 ViewLayer から見れば、注入オブジェクトたちを ApplicationComponent で管理してるのと変わらないのでは。
サンプルコード
sho5nn/android-tasting-mvp-dagger2
Activity で依存オブジェクトを確認できる。
UserView | FriendListView | FriendProfileView |
---|---|---|
依存図
各レイヤー間の依存方向を青い矢印で、依存性の注入方向を赤い矢印で表した図。
言わないこと
- Clean Architecture + MVP の在り方
- コードで表現したときの在り方やネーミング等は、適宜補完してもらえると。前述したサンプルコードにおいては、例えば Repository が抽象的ではない( Interface を定義していない)など。
- 本来は DomainLayer に Repository Interface を定義し、 DataLayer で実装するのが望ましい気がする。