パッケージの分類に悩んでいるクラス群があるのですが
MVCをベースに現在後述のようにクラス分けを行っていて、
最後のその他Fragment関連のもの
にあるクラスをどうすべきか悩んでいます。
主に1画面1Fragment1カスタムViewGroup[1DataLoader1Data]
という感じで設計してきました。
カスタムViewGroup
を作成したのはviewに当たるクラスを自分でnewしたくなかったというのと、
こうすることによってそのクラスにFragmentからrootViewを渡す必要がなくなるからです。
そんなFragmentは、主にDataLoader系
やSetting系
の生成をしているだけです。
分類に悩んでいるクラス群はそんなカスタムViewGroup
や画面の設定等を定義したクラス群です。
HeaderViewCreator
もカスタムViewGroup
にしてCreatorを取るつもりでしたが、
controllerにやらせるべきだろう記述があるのでそのままになっています。
他にもPagerView
やPhotoListView
などにもcontrollerにやらせるべきだろう記述が
混ざっていたりします。
また、Setting系
はカスタムViewにすべきでない?したとしても名前どうする?
という感じでそのままになっています。
また、LoginFragment
やDialogFragment系
については分離することに意味があるのかわからず
そのままになっています。
少なくとも厳密にMVCでなくてもその他Fragment関連のもの
にあるクラスを自分で納得できる形で
必要に応じて中身を整理するなどして1つのパッケージもしくは複数のパッケージに分類できたらと考えているのですが、どうすれば良いかがわかりません。
View系
はcontrollerが混ざっていたとしてもview_controllerとしてまとめればいい
と考えていますが、他のSetting系
はどうする?そもそもSettingPhoto
はいらないのでは?
という感じです。
そもそもの設計に良くない部分があるかもしれませんが、
どうかどなたかアドバイス等よろしくお願い致します。
ルート
├── MainActivity ----------------------- UserEventによる画面遷移等を定義
├── base ------------------------------- ベースクラス用
│ ├── BaseDialogFragment ------------- DialogFragmentのベースクラス
│ ├── BaseFragment ------------------- Fragmentのベースクラス
│ └── BindableAdapter ---------------- Adapterのベースクラス
├── fragment --------------------------- FragmentやDialogFragment用
│ ├── HeaderFragment ----------------- ヘッダーを含む画面のベースクラス
│ ├── LoginFragment ------------------ ログイン画面
│ ├── PhotoFragment ------------------ 写真拡大画面
│ ├── PhotoListFragment -------------- 写真一覧画面
│ ├── PriceListFragment -------------- 価格表画面
│ ├── WebViewFragment ---------------- WebView画面
│ └── dialog ------------------------- DialogFragment用
│ ├── ConfirmDialogFragment ------ 確認ダイアログ
│ └── MessageDialogFragment ------ 表示ダイアログ
├── model------------------------------- モデル用
│ ├── Api ---------------------------- APIを叩くのに使用
│ ├── AppController ------------------ Application Volleyの管理
│ ├── PagerData ---------------------- ページャ表示に必要なデータを保持
│ ├── PagerDataLoader ---------------- ページャ表示に必要なデータをロード
│ ├── PhotoDownloader ----- ---------- 写真をSDにダウンロード
│ ├── PhotoItem ---------------------- 写真一覧の1アイテムのデータを保持
│ ├── PhotoListData ------------------ 写真一覧表示に必要なデータを保持
│ ├── PhotoListDataLoader ------------ 写真一覧表示に必要なデータをロード
│ ├── PriceItem ---------------------- 価格表の1アイテムのデータを保持
│ ├── PriceListData ------------------ 価格表表示に必要なデータを保持
│ ├── PriceListDataLoader ------------ 価格表表示に必要なデータをロード
│ ├── User --------------------------- ログイン・ログアウト処理を定義 状態を保持
│ ├── UserEvent ---------------------- ユーザーイベント(○○画面へ行くなど)
│ └── Watermark ---------------------- PhotoView系のBitmapに透かしをつける
├── utility ---------------------------- ユーティリティー用
│ ├── Animation ---------------------- 画面遷移時に使うアニメーションを定義
│ └── UrlUtility --------------------- URLに関するユーティリティーメソッドを定義
├── view ------------------------------- カスタムViewやAdapter用
│ ├── CategoryView ------------------- カテゴリ名用のカスタムTextView
│ ├── PhotoView ---------------------- 写真用のカスタムImageView
│ ├── ScalingPhotoView --------------- 写真拡大用のカスタムPhotoView
│ └── adapter ------------------------ Adapter用
│ ├── PhotoListAdapter ----------- 写真一覧用カスタムBindableAdapter
│ └── PriceListAdapter ----------- 価格表用カスタムBindableAdapter
└── その他Fragment関連のもの ------------------------ 以下を一括りにするか、もしくは-
├── HeaderViewCreator -------------- ヘッダーの設定と挙動の定義
├── PagerView ---------------------- 写真一覧のページャ用カスタムFrameLayout
├── PhotoItemView ------------------ 写真一覧の1アイテム用カスタLinearLayout
├── PhotoListView ------------------ PhotoListFragmentのカスタムLinerLayout
├── PriceListView ------------------ PriceListFragmentのカスタムLinerLayout
├── SettingPhoto ------------------- ScalingPhotoViewにロードを頼むだけ
└── SettingWebView ----------------- WebViewの設定とURLによる挙動を定義