MVP框架实现了视图的完全解耦
M:model 数据曾
V:view 视图层
P:presenter 主持人 model和view的中介者
下面是一个简单demo将一个字符串展示textview
demo结构:
Model层数据处理,例如网络加载数据,后台请求数据等,这里为了简单明了直接给一个字符串:
View层:ImainView接口public class Model { IPresenter ipresenter;//得到Presenter接口 public Model(IPresenter ipresenter) { this.ipresenter = ipresenter; } /** * 数据处理方法,这里默认处理成功得到的数据为“下载成功” * 并将处理的数据交给persenter */ public void loadDate(){ ipresenter.loadDataSuccess("下载成功"); } }
public interface IMainView { void showText(String s); }
public class MainActivity extends AppCompatActivity implements IMainView{ TextView mytext; Presenter presenter = new Presenter(this);//获得persenter对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mytext = findViewById(R.id.mytext); presenter.LoadDate();//调用persenter的loadDate方法通知数据处理 } /** * 获得数据并展示到textview * @param s */ @Override public void showText(String s) { mytext.setText(s); } }Persenter:拥有Model和IMainView对象,中间逻辑处理
public class Presenter implements IPresenter{ Model model; IMainView iMainView; public Presenter(IMainView view) { this.model = new Model(this); iMainView = view; } public void LoadDate(){ model.loadDate();//通知Model处理数据 } //如果数据处理成功,将得到的数据传给view @Override public void loadDataSuccess(String s) { iMainView.showText(s); } }persenter接口:
public interface IPresenter { void loadDataSuccess(String s); }