-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Dai edited this page Jan 25, 2019
·
7 revisions
private ScriptContract.ScriptView mScriptView;
private ScriptContract.SelectView mSelectView;
private ScriptContract.DetailView mDetailView;
private ArrayList<ScriptModel> mScripts;
//今自分がどの画面にいるのかを管理する
private ViewState mState;
//画面移動で必要なスクリプト
private ScriptModel targetScript;
ブロック一覧を保持していて、コマンド挿入や削除・編集まで裏側の処理は任せています。
こいつを触るときは極力既存コードに触れず、メソッド作ってやってください。
全view(activity/fragment)で常に保持してるPresenterクラスがいるので、そいつはviewであればどこでも呼べます。
逆にPresenterからviewのメソッドを呼べるのでUI変更も加えられます。
Presenterから呼びたいViewメソッドと、Viewから呼びたいPresenterメソッドがあった場合はまずここでメソッドを定義してください。
MVP(Model - View - Presenter)を想定
Googleのサンプルリポジトリ
https://github.com/googlesamples/android-architecture
(MVCは最近ではイケてないらしい(詳しくはググれ) MVVMはViewModelの実装に関してDataBindingの実装コストが高すぎる)
守りたいこと
- ModelとViewはちゃんと分ける
- Presenterでテストを書けるようにする
- MVPで管理するメソッドは全部interface(Contract)にまとめて定義する
- Fragment使おう
- パッケージをちゃんと分ける (データ、画面、Adapterとか共通のもの)
画面に関するパッケージの構成案
- Package
- Activity (FragmentやPresenterの生成)
- Fragment (画面構築)
- Contract (Viewを操作するためのinterface集)
- Presenter (Viewのオブジェクトに対してバインド(紐づけする))
↓こういうのを各機能について設計していけばいいのでは