到底是怎么传参的?
2015-04-23 18:01
246 查看
开始学习分层以后,理解上有些问题。问同学的看法,上网搜。现在,理解了一些,大家看看理解哪里有问题,望指出!
层与层之间是如何联系的?
程序是按照U-B-D-B-U的顺序执行的。分为两个阶段:
1. 去时:U-B-D,是通过U层调用B层方法,B层调用D层方法,把三层联系起来的;
2. 返回时:D-B-U,是通过一次返回Entity,把三层联系起来的。
通过下图,可以看出他们的共同点,即每层都需要Entity实体。这是他们的共同点,也是通过这个类进行联系的。看代码也可以知道是通过Entity联系的,那么是怎么联系的?
分层离不开Entity!
下图,是在网上搜到的,我感觉非常正确,借用一下!这幅图详细的描述了程序执行的流程。
一、U层采集信息,并调用B层方法进行判断;从U—B层;
把文本框的内容复制给变量;
实例化一个B层对象,执行该对象,该对象的参数为上述变量,故执行方法时,发生了传参。
二、执行B层方法一开始,B层就调用D层,需要D层对数据库进行查询操作;从B—D层;
B层实例化D层对象,并执行该对象的方法;
D层对数据库进行一系列操作;
实例化Entity,并把数据库中的信息复制给Entity的属性。(之前仅仅是定义了实体对象,并没有实例化)
三、实体Entity得到值后,返回B层接着进行的判断,然后把判断结果返回U层;从D—B—U层。
小结:从U-B-D层,这个过程,可以Entity没有起到作用,到D层以后,对数据库操作完成以后,Entity才开始有值。但之前的声明,也很有用,是为了可以返回正确,执行D-B-U。下面进行说明。
为什么User名称不同,也能正确返回?
大家肯定也注意到了,U层声明Entity实体对象User,B层声明Entity实体对象User,D层也声明Entity实体对象User,那么这三个是一个吗?我的第一感觉是肯定不同。因为在不同的层,而且每次都声明,那么为什么把他们设置成一样的名字呢?若理解为一样,明明每次都重新声明,这样理解好像又说不通。
我尝试把名字改为User,User1,User2,结果不受影响,仍然可以正确返回!那么可以肯定这三个不是同一个对象。但是,就更加奇怪了:代码中B层写着return user1;执行程序时,却扔能正确返回到U层User!
尝试着不写返回值:vs给的提示是:需要一个类型可转换为“Login.Model.UserInfo”的对象。
看到这,我的理解是:return user;的意思是返回user的类Entity,而不是返回user本身。
到底是怎么传参的?
我们一直听说是通过方法传参的!但是,我还是不明白方法为什么可以传参?(之前,学习vb时,就不明白!)听胡森森一解释,顿时,豁然开悟!
执行方法时,进行了传参!如:U层调用B层的Login方法:在调用方法时,自然而然的就把参数传到了B层。
同样,B层调用D层的方法时,也就把参数传到了D层。
现在,想想传参的问题很简单明了,但当时怎么就想不通呢?
总结:总算是对分层明白了一些,但是,这个间隔的时间有点长。刚开始,敲三层时,知道执行完这一步,该执行下一步,就感到满足。但是,敲机房登录时,就遇到问题了,之前三层是C#语言,现在是VB,虽然,很像,但是,若停留在模仿阶段的话,很容易出错。我就出现了很严重的错误,导致三层直接脱节,相互没有关系。
层与层之间是如何联系的?
程序是按照U-B-D-B-U的顺序执行的。分为两个阶段:
1. 去时:U-B-D,是通过U层调用B层方法,B层调用D层方法,把三层联系起来的;
2. 返回时:D-B-U,是通过一次返回Entity,把三层联系起来的。
通过下图,可以看出他们的共同点,即每层都需要Entity实体。这是他们的共同点,也是通过这个类进行联系的。看代码也可以知道是通过Entity联系的,那么是怎么联系的?
分层离不开Entity!
下图,是在网上搜到的,我感觉非常正确,借用一下!这幅图详细的描述了程序执行的流程。
一、U层采集信息,并调用B层方法进行判断;从U—B层;
把文本框的内容复制给变量;
实例化一个B层对象,执行该对象,该对象的参数为上述变量,故执行方法时,发生了传参。
二、执行B层方法一开始,B层就调用D层,需要D层对数据库进行查询操作;从B—D层;
B层实例化D层对象,并执行该对象的方法;
D层对数据库进行一系列操作;
实例化Entity,并把数据库中的信息复制给Entity的属性。(之前仅仅是定义了实体对象,并没有实例化)
三、实体Entity得到值后,返回B层接着进行的判断,然后把判断结果返回U层;从D—B—U层。
小结:从U-B-D层,这个过程,可以Entity没有起到作用,到D层以后,对数据库操作完成以后,Entity才开始有值。但之前的声明,也很有用,是为了可以返回正确,执行D-B-U。下面进行说明。
为什么User名称不同,也能正确返回?
大家肯定也注意到了,U层声明Entity实体对象User,B层声明Entity实体对象User,D层也声明Entity实体对象User,那么这三个是一个吗?我的第一感觉是肯定不同。因为在不同的层,而且每次都声明,那么为什么把他们设置成一样的名字呢?若理解为一样,明明每次都重新声明,这样理解好像又说不通。
我尝试把名字改为User,User1,User2,结果不受影响,仍然可以正确返回!那么可以肯定这三个不是同一个对象。但是,就更加奇怪了:代码中B层写着return user1;执行程序时,却扔能正确返回到U层User!
尝试着不写返回值:vs给的提示是:需要一个类型可转换为“Login.Model.UserInfo”的对象。
看到这,我的理解是:return user;的意思是返回user的类Entity,而不是返回user本身。
到底是怎么传参的?
我们一直听说是通过方法传参的!但是,我还是不明白方法为什么可以传参?(之前,学习vb时,就不明白!)听胡森森一解释,顿时,豁然开悟!
执行方法时,进行了传参!如:U层调用B层的Login方法:在调用方法时,自然而然的就把参数传到了B层。
同样,B层调用D层的方法时,也就把参数传到了D层。
现在,想想传参的问题很简单明了,但当时怎么就想不通呢?
总结:总算是对分层明白了一些,但是,这个间隔的时间有点长。刚开始,敲三层时,知道执行完这一步,该执行下一步,就感到满足。但是,敲机房登录时,就遇到问题了,之前三层是C#语言,现在是VB,虽然,很像,但是,若停留在模仿阶段的话,很容易出错。我就出现了很严重的错误,导致三层直接脱节,相互没有关系。
相关文章推荐
- Spring 事务 readOnly 到底是怎么回事?
- 称职的父母到底该怎么做?
- 当网络管理员遭遇网络不通到底该怎么办
- 我们到底该怎么学技术?如何成为一个优秀的技术人员?
- 李喆:程序员到底怎么了
- 人工智能的创业方向到底怎么选?
- 搞IT的到底怎么了
- 五年漏税2000万美元,夏普到底怎么了?
- Blog到底怎么了?
- 从大数据的风水图,来看到底大数据是怎么回事
- 库存扣多了,到底怎么整
- 聊一聊直播利器,连麦直播背后的混流方案:到底该怎么混?
- 比特币挖矿,到底是怎么一回事回事?
- GNU和LINUX到底怎么个发音?
- 错误:数据提供程序或其他服务返回E_FAIL状态 到底怎么回事呢?
- js 数组的for循环到底应该怎么写?
- C#、ASP.NET主键到底怎么写比较好?ID?Id?id?IDs?Ids?ids?欢迎大家指点
- 并不简单!网页中为你指路的面包屑到底应当怎么使用?
- 关于战斗力计算模型的补充——到底怎么配点属性才会最强呢?
- 职业生涯到底该怎么规划呢?