MVC设计模式常应用于web项目,那么android上的mvc设计又体现在哪些地方呢?
首先谈谈什么叫做mvc。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,这与《设计模式》中的观察者模式是完全一样。
首先举个具体的例子(web端)
<html>
用户年龄:
<?php
$id=$_POST['id'];
$sql="select age from user where id=".$id;
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$age=$row['age'];
echo $age;
?>
</html>
这是一段简单的html和php嵌套的代码,上述代码完成了从数据库中根据用户id取出用户年龄的功能。但是这段代码有很多问题,刨除用户输入没有进行过滤的考虑,这段代码将显示,逻辑与数据都写在了一起,这样的代码利用率低,而且管理很不方便,因为如果编写大型网站都使用这样php嵌套html的方式来进行编码的话,需要做的重复工作特别多,而且如果一旦有一个地方需要变动的话,你可能需要一个个修改无数的页面。尽管这种做法今天看起来并不科学,但是曾经的互联网上,大量充斥的都是这样的代码。
下面来讲一种简单的将这种页面转换为mvc的方式。
<html>
用户年龄:
<script>
var jsonResp=request.responseText;
jsonResp=jsonResp.parseJSON();
var outputStr=jsonResp.toJSONSting().age;
document.writeln(outputStr);
</script>
</html>
这段代码的作用是将年龄信息从后台发送来的json数据中解析出来。下面是后端的代码。
先创立一个Model类
<?php
class Model
{
public $table;
public $field[];
public function __set($table,$field)
{
$this->$table=$table;
$this->$field=$field;
}
}
?>
操作数据库的类
<?php
class Database
{
...(其余的成员)
public $condition;
public $database;
public $result;
...
public function connect()
{
...
连接数据库
...
}
public function query($condition,$database,$condition_num)
{
$sql="select ".$result."from". $database.where $condition."=".$condition_num;
$result=mysql_query($sql); $row=mysql_fetch_array ($result,$result_type);
return $row;
}
}
?>
<?php
创建一个Model
$Model=new Model(...);
创建数据库操作对象
$Data=new DataBase($Model->...);
以json格式输出结果
echo json_encode($Data->query(...));
?>
上面的代码大概搭起了一个web版的mvc框架,其中网页端为view,php写的类为model,最后控制这些的代码为controler.
说清了mvc的概念及其应用后,我们可以看看mvc在android端是怎么体现的。