您的位置:首页 > 移动开发 > Android开发

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类

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是一种编程思想,只有时常使用,才能更好的理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: