您当前的位置: 首页 >  android

Kevin-Dev

暂无认证

  • 0浏览

    0关注

    544博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android -- 架构】MVC 模式

Kevin-Dev 发布时间:2020-03-30 10:25:26 ,浏览量:0

MVC

刚接触编程,相信第一个遇到的框架就是 MVC ,不管你经意还是不经意写出来的 Android 程序他就是 MVC 框架,只不过是 MVC 框架的某一个变种(最混乱的那种)。Android 系统本身就根据 MVC 建造的。

设计图

mvc.jpg

  • 视图层(View) 对应于 xml 布局文件和 java 代码动态 view 部分
  • 控制层(Controller) 对应于 Activity 和 Fragment 。
  • 模型层(Model) 针对业务模型,建立的数据结构和相关的类,它主要负责网络请求,数据库处理,I/O 的操作。
优点

由于MVC很好的分离了视图层和业务层,所以它具有以下优点:

  • 开发速度快
  • 可维护性高
  • 易于理解
缺点
  • 由于 MVC 的设计思想是从 Model 出发,而没有考虑到 View 端的复杂性,这样导致的问题是 Model 难以符合复杂多变的 View 端变化。导致 Model 的作用很小,而很多 View 层的职责也转移到了 Controller 层。Controller 变得臃肿不堪。耦合性也变高了。
  • 测试困难。
实例

需求:一个简单的按钮点击事件。 1. 代码 Listener.java

public interface Listener {
    void onEvent(String str);
}

Model.java

public interface Model {
    void onHandle(Listener listener,String str);
}

ModelImpl.java

public class ModelImpl implements Model {
    @Override
    public void onHandle(Listener listener, String str) {
        listener.onEvent(str + "ok");
    }
}

MainActivity.java

public class MainActivity extends AppCompatActivity implements Listener {
    private Button mButton;
    private ModelImpl mModel = new ModelImpl();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButton = findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mModel.onHandle(MainActivity.this,mButton.getText().toString());
            }
        });
    }

    @Override
    public void onEvent(String str) {
        mButton.setText(str);
    }
}
小结
  • 具有一定的分层,Model 彻底解耦,Controller 和 View 并没有解耦;
  • 层与层之间的交互尽量使用回调或者去使用消息机制去完成,尽量避免直接持有;
  • Controller 和 View 在 Android 中无法做到彻底分离,但在代码逻辑层面一定要分清;
  • 业务逻辑被放置在 Model 层,能够更好的复用和修改增加业务。
关注
打赏
1658837700
查看更多评论
立即登录/注册

微信扫码登录

0.0371s