繼續上一篇《ASP.NET開發,從二層至三層,至面向對象》http://www.49028c.com/insus/p/3822624.html。我們了解到怎樣把自己的程序由二層變為三層。本篇我們將學會在asp.net 面向對象編程。
真正來說,我們不應該直接在.aspx.cs中new一個BizBase類。正確的做法,是創建一個與.aspx.cs有直接關系的對象。如Item對象。根據數據庫表的設計,它有三個字段,因此我們在這個類中創建三個PRoperty:下面我們分別對.aspx.cs的好幾個方法,函數再次重構,先看Data_Binding(),把下圖中#44至#49行代碼移至Item類,并創建為一個返回DataTable的GetAll()函數。
我們就可以解決剛才所提及的問題,是在Item類中new BizBase類,而不是在.aspx.cs去。更好地解耦合。這樣,我在.aspx.cs的Data_Binding()方法重構為:在這里,我們已經是new Item()了。下面是重構添加記錄的方法,把一些相關的代碼移至Item類中,這個方法有兩步,一是判斷,二是插入:
在.aspx.cs的添加按鈕的click事件,就可以重構為:
現在我們開始把刪除事件的程序,重構至Item類別中去,創建一個Delete()方法:
GridView刪除事件,重構之后,成了這樣子:
這完全是使用對象來實現。也就是對象本身的property和方法。具體property或是方法是怎樣運作,此時無需多關心。達到了封裝的效果。
最后一個地方重構的,就是獲取標量值的方法,在Item對象中,創建一個返回string值函數GetDescriptionByItemNbr(),就兩行代碼之事:
被注釋掉的代碼,就是原來在.aspx.cs的代碼。
經過一系列的搬來移去,刪除所有注釋之后,得到一個完整的Item對象:
結果原先在.aspx.cs實例化的,現在完全跑去Item這個類中了。再來看看.aspx.cs的代碼,也刪除所有注釋之后,還有很多地方看到兩句實例化的代碼,就是:
Item objItem = new Item();
和
InsusJsUtility js = new InsusJsUtility();
這樣,我們可以再把它們從方法或函數內,搬移至頁面內:
其它方法內有此兩句的,均可以刪除了。最終完整的.aspx.cs代碼:以后,BizBase類基本上不需要怎樣去修改了,數據庫添加有新表,可以以表的名來創建一個類似Item的類。它包含有property,method,function等。在網頁中,直接new實例化這個對象。本篇演示源程序(access DB; .NET Framework 4.0;):http://download.VEVb.com/insus/ASPDOTNET/Asp_OOP2.rar注:文章太長了,寫成續集,請關注......
新聞熱點
疑難解答