====== 模型基本概念 ======
----
模型的概念和象征意义本节不阐述了。在App-Link的模型,可以理解为一个应用中的所有实体。对于一个新闻App来说,一条新闻是一个实体,一个新闻分类是一个实体,一条评论也是一个实体。通过讲实体的特征的提取和定义,我们便得到新闻模型,新闻分类模型,评论模型等。App-Link通过开发者创建的模型,来提供各种各样的服务,提高开发者的开发速度,同时也不会偏离开发者的面向对象分析、设计和编码。
因此,在App-Link平台的模型设计从来不会离开面向对象,那么,我们来看看如何从面向对象的角度来创建模型。
===== 数据库设计角度 =====
----
对于面向对象的软件设计来说,最合适的数据库设计是实体关系图(E-R图,Entity-Relationship)。因为通过设计一个个的实体,将现实世界中的我们需要变成对象以及对象的相关属性。再通过实体与实体中的关系,将被设计的软件应用的世界联系起来,完成面向对象设计的第一个步骤。E-R图可以说是很清楚地表达了我们将要完成的软件世界的原型。我们以共享单车的实体设计为例子,来试一下画一个ER图。
{{:模型管理指南:共享单车er图.png?direct|}}
合理吗?看上去表有点少,不过我们已经足够利用一下4个实体所构建的表完成这个APP了。那么我们根据E-R图就可以来设计表结构了。
首先4张记录业务实体的表
//单车表
tb_bike
{
bikeno varchar,
location varchar
}
//用户表
tb_user{
mobileno varchar,
balance decimal
}
//充值记录
tb_user_recharge{
user_id int,
recharged_time datetime,
recharged_amount decimal
}
//单车使用记录
tb_bike_uselog{
bike_id int,//单车ID
user_id int,//用户ID
starttime datetime,//开始借用时间
endtime datetime,//结束时间
paid_amount decimal//支付金额
}
设计很简单,但这确实就已经是我们的共享单车APP的主要结构了,其它一切衍生功能都是围绕着这4个表来出现。那么,对于我们的共享单车APP来说,这四个模型就是我们对于一款APP对应于数据的业务模型,这四个业务模型装载了共享单车的所有数据。
**这就是我们APP-Link的模型了**
===== 面向对象设计角度 =====
----
同样,我们做面向对象设计,要把软件世界中的一个个对象抽象定义出来。这些对象和实体模型非常相似,设计如下:
//单车表
class Bike
{
string bikeno;
string location;
}
//用户表
class User{
string mobileno;
decimal balance;
}
//充值记录
class UserRecharge{
User user;
DateTime rechargedTime;
Decimal rechargedAmount;
}
//单车使用记录
class BikeUselog{
Bike bike;//单车ID
User user;//用户ID
DateTime starttime;//开始借用时间
DateTime endtime;//结束时间
Decimal paidAmount;//支付金额
}
在面向对象的中设计的对象,就是我们的数据模型。
**这就是我们APP-Link的模型了**
===== App-Link中的模型 =====
----
App-Link的模型就是这么简单,并且融合了以上两者的概念。换言之,就是**类设计和数据库表实体设计的概念二合为一**。我们这里简单暴力地来告诉各位,App-Link的模型有什么特色,以直接让你领会,什么叫二合一。
==== 名字 ====
名很重要,名字觉得了这个模型是做什么的。User这个名字的模型绝对不会变成单车,因此,每一个模型都有一个专属的名字,而每一个名字都是你在进行**面向对象设计中定义出来的**业务对象。
==== 数据表 ====
以前,我们定义类,定义数据表,基本上都是分开定义的,表不一定对的上类设计,类设计并不一定只是一张表的内容。App-Link大胆地认为,这种想法完全错误。对象的类设计分为很多种,其中有一些类就是专门装在数据库的表设计用的,这种类基本上定义了就必须和数据库表结构一致。
App-Link中,将模型的类设计的概念融入表的概念,让两者揉为一体。因为每一个模型就是软件中设计的实体,这些实体必然是要有**数据存储**。
==== 对象属性或表字段 ====
在App-Link的模型概念中,因为数据库表和类设计的概念是二合一的!因此,在APP-Link的模型设计中,我们的模型设计需要类名和表名,当然更加需要对象属性和表字段。这两者是一样的概念。在App-Link中,我们定义了许多常用的字段类型。
===== 模型的作用 =====
----
在App-Link中,一切都围绕着模型来构成,模型的作用有以下几点。
==== 解决方案 ====
模型的设计,意味着你的软件世界的设计,你的软件设计有什么,就是你的软件解决方案!从软件模型的设计,我们可以基本判断出这个软件是为了解决什么问题,如我们的共享单车的设计,围绕着用户-》单车的解决方案。
==== 数据管理中心 ====
模型是软件世界中的实体,那么意味着我们必须要有一个**数据管理中心**来对这些实体数据进行管理。我们的业务模型和数据中心紧密结合,直接让数据中心对我们的模型进行它的数据的增删查改功能。
==== 数据交互接口 ====
如我们之前所说的,App-Link是作为一种数据服务后端的角色出现,因此,我们对于移动应用前端的输出就是数据!数据当然是来自于模型的数据,直接为数据交互接口服务提供模型的增删查改接口。
===== 总结 =====
----
以上,是App-Link对于模型的基本概念的描述,其实作者本人也不是专家,大家就当瞎扯一顿。重要的就是,我们像类设计,数据库实体设计那样来定义、设计我们的模型,让其有数据表的存储为我们后续的数据管理中心和数据交互接口的功能提供定义,以形成一个应用完整的后端数据服务基础功能。
那么,接着我们详细来了解一下模型要怎么定义以及有什么属性吧。
----
继续前往[[模型管理指南:模型属性|]]
----