洞察探索如何利用兼容微信生态的小程序容器,实现跨平台开发,助力金融和车联网行业的数字化转型。
722
2022-11-26
【Android -- 架构】MVC 模式
MVC
刚接触编程,相信第一个遇到的框架就是 MVC ,不管你经意还是不经意写出来的 Android 程序他就是 MVC 框架,只不过是 MVC 框架的某一个变种(最混乱的那种)。Android 系统本身就根据 MVC 建造的。
设计图
视图层(View)对应于 xml 布局文件和 java 代码动态 view 部分控制层(Controller)对应于 Activity 和 Fragment 。模型层(Model)针对业务模型,建立的数据结构和相关的类,它主要负责网络请求,数据库处理,I/O 的操作。
优点
由于MVC很好的分离了视图层和业务层,所以它具有以下优点:
开发速度快可维护性高易于理解
缺点
由于 MVC 的设计思想是从 Model 出发,而没有考虑到 View 端的复杂性,这样导致的问题是 Model 难以符合复杂多变的 View 端变化。导致 Model 的作用很小,而很多 View 层的职责也转移到了 Controller 层。Controller 变得臃肿不堪。耦合性也变高了。测试困难。
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 层,能够更好的复用和修改增加业务。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~