MVP MVVM 类图

69 阅读1分钟

mermaid.js.org/syntax/clas…

MVP 类图

classDiagram    
    LoginModel <|.. LoginModeImp 
    <<interface>> LoginModel
    LoginView <|.. LoginViewImpl
   	<<interface>> LoginView
    LoginPresenter <|.. LoginPresenterImpl
   	<<interface>> LoginPresenter

	class LoginModeImp{
		login(User user, OnLoginFinishedListener listener)
	}
	class LoginViewImpl{
		 void showProgress();
    	void hideProgress();
    	void setUsernameError();
    	void setPasswordError();
	}
	class LoginPresenterImpl {
	        LoginView mView
	        LoginModel mModel
			destroy()
	        validateCredentials(User u)
	   }
	  
	  class Activity {
		onCreate()
	}

Activity o-- LoginPresenter
LoginPresenterImpl o-- LoginModel
LoginPresenterImpl o-- LoginView

MMVVM

  1. 布局文件最外层使用layout布局标签
  2. 标签中需要定义变量类似:
  3. View的属性需要使用上面定义的变量赋值:例如 "@={adapterLogin.password}"有中间这个等号是双向绑定的形式,UI变化的时候会调用 ModelUser的setPassword方法
  4. 代码中可以使用 @BindingAdapter("xx_name")的形式监听layout xml中的变化 这里的xx_name 必须和下面的xx_name 保持一直 <EditText xx_name="adapterLogin.userName"

这代表 当ModelUser的userName的值发生变化的时候,会调用代码中@BindingAdapter("xx_name")注解标识的方法