本文主要是介绍浅尝MVVM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于安卓开发,设计鼻祖MVC的思想,让Actvity承担的责任更重,造成xml功能弱小,Actvity累死。小型项目可以拿来试试,中大型项目不建议考虑,不然几千几万行的Actvity会让你发狂。
于是,顺势而为,MVP诞生。将xml和Activty都划分到view层,model依然作为业务逻辑和实体模型的载体。这个时候Presenter横空出世。作为view和Model之间的交互。但是代码量大大增加,虽然降低了耦合,可复用扩展性强,但是对于码农来说,功过相抵吧。适合用于中小型项目。
最新一直炒的火热的MVVM思想站出来了,据说是要解除一些诟病,拯救世界。下面就举一个MVVM的例子来看一下如何拯救世界:
MainActvity
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);User user = new User(666,"一口仨馍", "走在勇往直前的路上");binding.setUser(user);user.setAccount("一口四个馍");}
}
实体类User:
public class User {private int id;private String account;private String pwd;public User() {}public User(int id, String account, String pwd) {this.id = id;this.account = account;this.pwd = pwd;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}
}
actvity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"><data><import type="com.dyk.mvvp.bean.User" /><variablename="user"type="User" /></data><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="@{String.valueOf(user.id)}" /><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="@{user.account}" /><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="@{user.pwd}" /></LinearLayout></layout>
看起来似乎简洁了很多,可以有很多时间去约会了,但是,故事并未结束。
那些身先士卒的英雄向我们证明了,有的时候数据获取不到,有的时候报错难以排查。当然,详细的坑,还需要发烧君前去试探。
虽然前途漫漫,危险重重,相信Oracle大君会排除万难,为广大的码农填平这些坑。
PS:读出了Spring依赖注入的味道。。。
这篇关于浅尝MVVM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!