Android MVC
2016-07-22 12:13
387 查看
最近,闲来无事总在想,android到底在学什么,好多框架都已经封装好,我们只是拿来用而已。布局?看源码,理解相关知识点?其实,我也不知道,但唯一了解的是,现在大的项目工程中,一个好的框架,好的设计模式,能减少很大的工作量。因此接下来两篇博客来学习一下Android中常用的两种框架设计模式 MVC和MVP。先我们来看看MVC 模式。
首先看Activity(这里是控制层):
public class MainActivity extends AppCompatActivity implements ViewUpdaLister{
}
从上面代码可以看到,Activity持有了MyModel模型的对象,当用户有点击Button交互的时候,Activity作为Controller控制层读取View视图层EditTextView的数据,然后向Model模型发起数据请求,也就是调用MyModel对象的方法 getData()方法。当Model模型处理数据结束后,通过接口ViewUpdaLister通知View视图层数据处理完毕,View视图层该更新界面UI了。至此,整个MVC框架流程就在Activity中体现出来了。
Mould层(业务逻辑处理):
public class MyMoudle implements BaseMoudle {
}
通知更新view层的接口
public interface ViewUpdaLister {
void getSum(String sum);
}
总结:
在Android项目中,业务逻辑,数据处理等担任了Model(模型)角色,XML界面显示等担任了View(视图)角色,Activity担任了Contronller(控制器)角色。contronller(控制器)是一个中间桥梁的作用,通过接口通信来协同 View(视图)和Model(模型)工作,起到了两者之间的通信作用。
在MVC模式中我们发现,其实控制器Activity主要是起到解耦作用,将View视图和Model模型分离,虽然Activity起到交互作用,但是找Activity中有很多关于视图UI的显示代码,因此View视图和Activity控制器并不是完全分离的,造成了Activity既像View又像Controller(当然了Data-Binder的出现,可能会让View更像View吧),那下篇文章就讲MVP模式
首先看Activity(这里是控制层):
public class MainActivity extends AppCompatActivity implements ViewUpdaLister{
EditText editText; Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 editText= (EditText) findViewById(R.id.my_edit); button= (Button) findViewById(R.id.button); final MyMoudle myMoudle=new MyMoudle(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { myMoudle.getData(editText.getText().toString(),MainActivity.this); } }); } @Override public void getSum(String sum) { editText.setText(sum); }
}
从上面代码可以看到,Activity持有了MyModel模型的对象,当用户有点击Button交互的时候,Activity作为Controller控制层读取View视图层EditTextView的数据,然后向Model模型发起数据请求,也就是调用MyModel对象的方法 getData()方法。当Model模型处理数据结束后,通过接口ViewUpdaLister通知View视图层数据处理完毕,View视图层该更新界面UI了。至此,整个MVC框架流程就在Activity中体现出来了。
Mould层(业务逻辑处理):
public class MyMoudle implements BaseMoudle {
@Override public void getData(String i, ViewUpdaLister viewUpdaLister) { int sum=Integer.parseInt(i)+100; viewUpdaLister.getSum(sum+""); }
}
通知更新view层的接口
public interface ViewUpdaLister {
void getSum(String sum);
}
总结:
在Android项目中,业务逻辑,数据处理等担任了Model(模型)角色,XML界面显示等担任了View(视图)角色,Activity担任了Contronller(控制器)角色。contronller(控制器)是一个中间桥梁的作用,通过接口通信来协同 View(视图)和Model(模型)工作,起到了两者之间的通信作用。
在MVC模式中我们发现,其实控制器Activity主要是起到解耦作用,将View视图和Model模型分离,虽然Activity起到交互作用,但是找Activity中有很多关于视图UI的显示代码,因此View视图和Activity控制器并不是完全分离的,造成了Activity既像View又像Controller(当然了Data-Binder的出现,可能会让View更像View吧),那下篇文章就讲MVP模式
相关文章推荐
- android 6.0系统扫不到Ble蓝牙问题
- 主线程阻塞、消息队列机制和图片下载
- android MVVM开发模式(一)
- 【Android】dip和px之间到底如何转换
- Android - 回到顶部实现
- android系统服务及权限设置
- android学习笔记 SwipeRefreshLayout 的使用
- Android中页面自动刷新操作
- android:layout_gravity和android:gravity的区别
- Eventbus的第一次接触
- Android相关技术知识点
- android开发中常用的快捷键
- android Ant 打包
- EventBus的使用及 解决异常Subscriber ****has no public methods called **
- Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class android.sup
- 关于android:windowIsTranslucent 属性问题与第一加载白屏问题!
- 解决Android 5.0中出现的错误:Service Intent must be explicit
- Android IPC机制(三)——利用AIDL实现跨进程通信
- NEON在Android中的使用举例【转】
- 用android studio 生成javadoc