继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

ASP.NET开发,从二层至三层,至面向对象

慕UI0519722
关注TA
已关注
手记 296
粉丝 85
获赞 267

真正来说,我们不应该直接在.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实例化这个对象。


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP