[Adroid]アーキテクチャモード(Architecture Pattern)、MVP?
理解するアーキテクチャモード(Architecture Pattern)、MVC
詳細については、上記の記事を参照してください.)
Model, View, Presenter
ビューとモデルの結合度が高いMVCモードの問題を補うために作成
表示とモデルはデモンストレーターのみ
-独立領域 、ViewやPresenterなどの他の要素に依存しない
-Presenterでモデルで処理されたデータを受信してユーザーに表示する
-ユーザーのアクションとアクティブライフサイクルのステータスの変更を監視し、デモンストレーションに送信します.
-デモンストレーターを使用してデータを交換するため、デモンストレーター に非常に依存する.
-VCのコントローラは直接ビューに接続され、モデル-ビューのメディアとして機能します.
MVPのデモンストレーション者がインタフェースを介して対話する
ユーザの動作順序
1.View:ユーザーイベント発生
2.View->デモンストレーター:ユーザーイベントの転送
3.Presenter->モデル:要求データ
4.モデル->デモンストレーター:転送要求のデータ
5.デモンストレーター:モデルからデータを抽出する
6.プレゼンテーション->ビュー:制限されたデータの転送
7.View:デモンストレーションによって送信されたデータを表示する
BasePresenter Contract
ViewとPresenterを接続するためのインタフェースファイル Presenter
モデルとビューを接続して動作を処理 Activity
📂com.example.MVP
┣ 📂db
┣ 📂network
┣ 📂presenter
┃ ┣ 📂BasePresenter
┃ ┣ 📂Contract
┣ 📂ui
┃ ┣ 📂main
┃ ┣ 📂search
┃ ┣ 📂review
┗ 📂utils型番:
データファイルとデータ処理ロジック ビュー: プレゼンテーション:
長所
-MVCよりも明確なコード
-モデルとビューの結合度を低下させることで拡張性を向上
-テストコードの作成が容易
短所
-アプリケーションが複雑であるほど、ビューとデモンストレーションの依存性が高くなります.
Example
MovieReview Example with Naver API - hyooosong github
Reference
MVP + kotlin Example
Androidアーキテクチャモード-MPPとは何ですか?
詳細については、上記の記事を参照してください.)
MVPモード
Model, View, Presenter
ビューとモデルの結合度が高いMVCモードの問題を補うために作成
表示とモデルはデモンストレーターのみ
Model
-プログラム内に書き込まれたデータを格納および処理する役割(ビジネスロジック)-独立領域
View
-ユーザーインタフェース(Activity、Fragmentなど)-Presenterでモデルで処理されたデータを受信してユーザーに表示する
-ユーザーのアクションとアクティブライフサイクルのステータスの変更を監視し、デモンストレーションに送信します.
-デモンストレーターを使用してデータを交換するため、デモンストレーター
Presenter
-モデルとビュー間のメディア-VCのコントローラは直接ビューに接続され、モデル-ビューのメディアとして機能します.
MVPのデモンストレーション者がインタフェースを介して対話する
ユーザの動作順序
1.View:ユーザーイベント発生
2.View->デモンストレーター:ユーザーイベントの転送
3.Presenter->モデル:要求データ
4.モデル->デモンストレーター:転送要求のデータ
5.デモンストレーター:モデルからデータを抽出する
6.プレゼンテーション->ビュー:制限されたデータの転送
7.View:デモンストレーションによって送信されたデータを表示する
アンドロイドのMVPは?
interface BasePresenter<T> {
fun takeView(view : T) // View가 생성(bind) 될 때 Presenter에 전달
fun dropView() // View가 제거(unBind) 될 때 Presenter에 전달
}
ViewとPresenterを接続するためのインタフェースファイル
interface Contract {
interface View {
fun A() // 값을 보여줄 View 메소드 선언
}
interface Presenter: BasePresenter<View> {
fun B() // 값을 구하기 위한 메소드 선언
}
}
class MainPresenter : Contract.Presenter {
private var mainView : Contract.View? = null
// View와 Presenter 연결
override fun takeView(view: Contract.View) {
mainView = view
}
override fun B() {
}
// View가 제거된 것을 Presenter에 알려줌
override fun dropView() {
mainView = null
}
}
class MainActivity : AppCompatActivity(). Contract.View {
private lateinit var mainPresenter : MainPresenter
override fun onCreate() {
initPresenter()
mainPresenter.takeView(this)
onClickBtn()
}
override fun onDestroy() {
mainPresenter.dropView()
}
override fun initPresenter() {
mainPresenter = MainPresenter()
}
private fun onClickBtn() {
btn.setOnClickListener {
mainPresenter.B()
}
}
}
MVPモードのパッケージング例
📂com.example.MVP
┣ 📂db
┣ 📂network
┣ 📂presenter
┃ ┣ 📂BasePresenter
┃ ┣ 📂Contract
┣ 📂ui
┃ ┣ 📂main
┃ ┣ 📂search
┃ ┣ 📂review
┗ 📂utils
DB, API, SharedPreference, ~~Model(Data)
等データファイルとデータ処理ロジック
Activity, Fragment, .xml
などのUIロジックcontract, presenter
などのインタフェースと処理ロジックMVPモードのメリットとデメリット
長所
-MVCよりも明確なコード
-モデルとビューの結合度を低下させることで拡張性を向上
-テストコードの作成が容易
短所
-アプリケーションが複雑であるほど、ビューとデモンストレーションの依存性が高くなります.
Example
MovieReview Example with Naver API - hyooosong github
Reference
MVP + kotlin Example
Androidアーキテクチャモード-MPPとは何ですか?
Reference
この問題について([Adroid]アーキテクチャモード(Architecture Pattern)、MVP?), 我々は、より多くの情報をここで見つけました https://velog.io/@hyooosong/Android-아키텍처-패턴-Architecture-Pattern-MVPテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol