Android中的MVC模式理解
2017-05-14 19:56
260 查看
MVC概述:
MVC模式的结构分为三部分,实体层的Model,视图层的View,以及控制层的Controller。
(1)其中View层其实就是程序的UI界面,用于向用户展示数据以及接收用户的输入。
(2)而Model层就是JavaBean实体类,用于保存实例数据。
(3)Controller控制器用于更新UI界面和数据实例。看图
例如,View层接受用户的输入,然后通过Controller修改对应的Model实例;同时,当Model实例的数据发生变化的时候,需要修改UI界面,可以通过Controller更新界面。(View层也可以直接更新Model实例的数据,而不用每次都通过Controller,这样对于一些简单的数据更新工作会变得方便许多。)
举个简单的例子,现在要实现一个飘雪的动态壁纸,可以给雪花定义一个实体类Snow,里面存放XY轴坐标数据,View层当然就是SurfaceView(或者其他视图),为了实现雪花飘的效果,可以启动一个后台线程,在线程里不断更新Snow实例里的坐标值,这部分就是Controller的工作了,Controller里还要定时更新SurfaceView上面的雪花。进一步的话,可以在SurfaceView上监听用户的点击,如果用户点击,只通过Controller对触摸点周围的Snow的坐标值进行调整,从而实现雪花在用户点击后出现弹开等效果。
看代码:
model uesr类
view MainActivity
Controller UesrHelp
view 也可以直接修改Uesr的属性,修改一下MainActivity和就可以了:
以上就是小样对MVC的理解,不足之处请多指教。MVC是一种编程思想,只有时常使用,才能更好的理解。
MVC模式的结构分为三部分,实体层的Model,视图层的View,以及控制层的Controller。
(1)其中View层其实就是程序的UI界面,用于向用户展示数据以及接收用户的输入。
(2)而Model层就是JavaBean实体类,用于保存实例数据。
(3)Controller控制器用于更新UI界面和数据实例。看图
例如,View层接受用户的输入,然后通过Controller修改对应的Model实例;同时,当Model实例的数据发生变化的时候,需要修改UI界面,可以通过Controller更新界面。(View层也可以直接更新Model实例的数据,而不用每次都通过Controller,这样对于一些简单的数据更新工作会变得方便许多。)
举个简单的例子,现在要实现一个飘雪的动态壁纸,可以给雪花定义一个实体类Snow,里面存放XY轴坐标数据,View层当然就是SurfaceView(或者其他视图),为了实现雪花飘的效果,可以启动一个后台线程,在线程里不断更新Snow实例里的坐标值,这部分就是Controller的工作了,Controller里还要定时更新SurfaceView上面的雪花。进一步的话,可以在SurfaceView上监听用户的点击,如果用户点击,只通过Controller对触摸点周围的Snow的坐标值进行调整,从而实现雪花在用户点击后出现弹开等效果。
看代码:
model uesr类
public class Uesr { private String name ; private String age ; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
view MainActivity
public class MainActivity extends Activity { public EditText nameEd , ageEd ; public Button but1 , but2 ; public UesrHelp help ; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_layout); nameEd = (EditText) findViewById( R.id.name); ageEd = (EditText) findViewById( R.id.age); but1 = (Button) findViewById( R.id.but1); but2 = (Button) findViewById( R.id.but2); help = new UesrHelp(this); but1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { help.setUersName( nameEd.getText().toString()); help.setUesrAge(ageEd.getText().toString()); nameEd.setText(""); ageEd.setText(""); } }); but2.setOnClickListener(new View.OnClickListener() { @Override b3e0 public void onClick(View v) { help.getUesrName(); help.getUesrAge(); } }); } }
Controller UesrHelp
public class UesrHelp { private Uesr uesr; private MainActivity context; public UesrHelp(Context context){ this.context = (MainActivity) context; uesr = new Uesr(); } public void setUersName( String name){ uesr.setName( name ); } public void setUesrAge( String age ){ uesr.setAge( age ); } public void getUesrName(){ context.nameEd.setText(uesr.getName() ); } public void getUesrAge(){ context.ageEd.setText(uesr.getAge() ); } private Uesr getUesr(){ return uesr ; } }
view 也可以直接修改Uesr的属性,修改一下MainActivity和就可以了:
public class MainActivity extends Activity { public EditText nameEd , ageEd ; public Button but1 , but2 ; public UesrHelp help ; private Uesr uesr ; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_layout); nameEd = (EditText) findViewById( R.id.name); ageEd = (EditText) findViewById( R.id.age); but1 = (Button) findViewById( R.id.but1); but2 = (Button) findViewById( R.id.but2); help = new UesrHelp(this); but1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { help.setUersName( nameEd.getText().toString()); help.setUesrAge(ageEd.getText().toString()); nameEd.setText(""); ageEd.setText(""); } }); but2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { uesr = help.getUesr(); uesr.setName( nameEd.getText().toString()); uesr.setAge( ageEd.getText().toString()); } }); } }
以上就是小样对MVC的理解,不足之处请多指教。MVC是一种编程思想,只有时常使用,才能更好的理解。
相关文章推荐
- Android中的代码管理和MVP,MVC模式在Android中的使用(重点:理解“高内聚、低耦合”)
- Android开发中的MVC模式理解
- Android学习之浅谈对MVC模式和MVP模式的理解
- android的文件系统结构及其引导过程的初步理解
- android的文件系统结构及其引导过程的初步理解
- [转]android的文件系统结构及其引导过程的初步理解
- Android面试之---谈谈你对Android NDK的理解.
- 对AndroidManifest.xml的一点理解
- MVC模式初步理解
- Android Handler理解
- 对于android触摸事件模型的一些理解
- OFBizChina: 理解MVC模式
- 我对Android中apk文件进行签名的一点理解
- 我对Android中apk文件进行签名的一点理解(一)
- android的文件系统结构及其引导过程的初步理解
- android平台上px和dip的关系理解
- android的文件系统结构及其引导过程的初步理解
- Android中级教程之--------Android应用程序的生命周期(一定要理解,面试会问的哦!)
- android的文件系统结构及其引导过程的初步理解
- 深入理解Android消息处理系统——Looper、Handler、Thread