对于安卓开发,设计鼻祖MVC的思想,让Actvity承担的责任更重,造成xml功能弱小,Actvity累死。小型项目可以拿来试试,中大型项目不建议考虑,不然几千几万行的Actvity会让你发狂。
于是,顺势而为,MVP诞生。将xml和Activty都划分到view层,model依然作为业务逻辑和实体模型的载体。这个时候Presenter横空出世。作为view和Model之间的交互。但是代码量大大增加,虽然降低了耦合,可复用扩展性强,但是对于码农来说,功过相抵吧。适合用于中小型项目。
最新一直炒的火热的MVVM思想站出来了,据说是要解除一些诟病,拯救世界。下面就举一个MVVM的例子来看一下如何拯救世界:
MainActvity
public class MainActivity extends Activity {
@Override
protected 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" />
<variable
name="user"
type="User" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{String.valueOf(user.id)}" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.account}" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.pwd}" />
</LinearLayout>
</layout>
看起来似乎简洁了很多,可以有很多时间去约会了,但是,故事并未结束。
那些身先士卒的英雄向我们证明了,有的时候数据获取不到,有的时候报错难以排查。当然,详细的坑,还需要发烧君前去试探。
虽然前途漫漫,危险重重,相信Oracle大君会排除万难,为广大的码农填平这些坑。
PS:读出了Spring依赖注入的味道。。。