美文网首页Android
Android MVC模式

Android MVC模式

作者: DageHao | 来源:发表于2018-12-11 16:11 被阅读12次

前言:其实在Android studio创建一个项目的模式也是一个简化的mvc模式,不过activity中有太多太多的代码,因为activity中包含了model层和controller层,下面详细解析一下MVC模式,并用一个小例子带大家去理解。

mvc模式.png

MVC模式介绍:

MVC是Model-View-Controller的简称
Model:模型层,负责处理数据的加载或者存储
View:视图层,负责界面数据的展示,与用户进行交互
Controller:控制器层,负责逻辑业务的处理

MVC模式的特点:

1.耦合性低;
2.可扩展性好;
3.模块职责划分明确

MVC模式的不足:

XML文件作为视图层,所做的事情比较有限,所以Activity作为Controller同时也承担了一部分的View视图显示工作,导致Activity代码庞大,维护困难

接下来就看一个非常简单的小例子:

1.项目架构


项目架构

2.首先定义一个person的bean,这个都见多了,没什么好说的

public class Person {

    private String username;

    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

3.定义一个回调接口 OnPersonListener,对应的一个成功方法和失败方法

public interface OnPersonListener {

    void onSuccess(Person person);

    void onFailure();

}

4.定义一个接口 PersonModle

public interface PersonModle {

    void Login(Person person,OnPersonListener onPersonListener);

}

4.定义一个实现类 PersonModelImpl,实现PersonModle接口,在方法中添加逻辑

public class PersonModelImpl implements PersonModle {

    //在此处写相应逻辑
    @Override
    public void Login(Person person, OnPersonListener onPersonListener) {

        if(person.getUsername().equals("123")&&person.getPassword().equals("123")){
            onPersonListener.onSuccess(person);
        }else {
            onPersonListener.onFailure();
        }

    }
}

5.再来看看activity中的代码

public class MainActivity extends AppCompatActivity implements OnPersonListener,View.OnClickListener {

    private EditText et_username;

    private EditText et_password;

    private Button btn_login;

    private String username;

    private String password;

    private PersonModelImpl personModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        init();
        personModel = new PersonModelImpl();
    }

    //控件初始化
    private void init() {

        et_username = (EditText)findViewById(R.id.et_username);
        et_password = (EditText)findViewById(R.id.et_password);
        btn_login = (Button)findViewById(R.id.btn_login);
        btn_login.setOnClickListener(this);

    }


    @Override
    public void onClick(View v) {

        username = et_username.getText().toString();
        password = et_password.getText().toString();

        Person person = new Person();
        person.setUsername(username);
        person.setPassword(password);

        personModel.Login(person,this);


    }

    @Override
    public void onSuccess(Person person) {

        Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onFailure() {
        Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show();
    }
}

可以看到虽然逻辑非常简单,但是哪一块需要做什么事情是非常清晰的。但其实modle层和view层耦合性还是比较大的,在IOS中的MVC模式则不存在这个问题。所以其实Android最适合的模式是MVP模式,但是也要看具体项目吧,个人认为MVP模式容易类爆炸,在网上有很多比MVC优秀但比MVP简单的模式,如果是个人撸的话就要快速开发嘛,可以去找找。

相关文章

网友评论

    本文标题:Android MVC模式

    本文链接:https://www.haomeiwen.com/subject/cckehqtx.html