到底是怎麼傳參的?

        開始學習分層以後,理解上有些問題。問同學的看法,上網搜。現在,理解了一些,大家看看理解哪裏有問題,望指出!

        層與層之間是如何聯繫的?

       程序是按照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,雖然,很像,但是,若停留在模仿階段的話,很容易出錯。我就出現了很嚴重的錯誤,導致三層直接脫節,相互沒有關係。




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