Skip to content
Dai edited this page Jan 25, 2019 · 7 revisions

Spica-Android のつくりかた

さいきょうのPresenter

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変更も加えられます。

Contractクラス

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のオブジェクトに対してバインド(紐づけする))

↓こういうのを各機能について設計していけばいいのでは 命令追加のフロー