到底是怎么传参的?

        开始学习分层以后,理解上有些问题。问同学的看法,上网搜。现在,理解了一些,大家看看理解哪里有问题,望指出!

        层与层之间是如何联系的?

       程序是按照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,虽然,很像,但是,若停留在模仿阶段的话,很容易出错。我就出现了很严重的错误,导致三层直接脱节,相互没有关系。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章