网上购物系统(Task100)——业务逻辑层BLL(面向接口的编程模式)

网友投稿 754 2022-09-17

网上购物系统(Task100)——业务逻辑层BLL(面向接口的编程模式)

网上购物系统(Task100)——业务逻辑层BLL(面向接口的编程模式)

【操作步骤】一、新建类库IDAL,设置属性,添加引用→项目→Model二、添加类ICategory.cs和IItem.cs1、ICategory.csusing System;using System.Collections.Generic;using WestGarden.Model;namespace WestGarden.IDAL{ public interface ICategory { IList GetCategories(); CategoryInfo GetCategory(string categoryId); }}2、IItem.csusing System;using System.Collections.Generic;using WestGarden.Model;namespace WestGarden.IDAL{ public interface IItem { IList GetItemsByCategory(string CategoryId); IList GetItemDetailsByItemId(int ItemId); void UpdateItem(ItemDetails item); void InsertItem(ItemDetails item); void DeleteItem(ItemDetails item); }}三、新建类库BLL,设置属性,添加引用→项目→Model、DAL四、添加类Category.cs和Item.cs1、Category.csusing System.Collections.Generic;using WestGarden.Model;using WestGarden.IDAL;using WestGarden.DAL;namespace WestGarden.BLL{ public class Category { private static readonly ICategory dal = new WestGarden.DAL.Category(); public IList GetCategories() { return dal.GetCategories(); } public CategoryInfo GetCategory(string categoryId) { if (string.IsNullOrEmpty(categoryId)) return null; return dal.GetCategory(categoryId); } }}2、Item.csusing System.Collections.Generic;using WestGarden.Model;using WestGarden.IDAL;using WestGarden.DAL;namespace WestGarden.BLL{ public class Item { private static readonly IItem dal = new WestGarden.DAL.Item(); public IList GetItemsByCategory(string CategoryId) { if (string.IsNullOrEmpty(CategoryId)) return new List(); return dal.GetItemsByCategory(CategoryId); } public IList GetItemDetailsByItemId(int ItemId) { return dal.GetItemDetailsByItemId(ItemId); } public void UpdateItem(ItemDetails item) { dal.UpdateItem(item); } public void InsertItem(ItemDetails item) { dal.InsertItem(item); } public void DeleteItem(ItemDetails item) { dal.DeleteItem(item); } }}五、数据访问层DAL中,添加引用→项目→IDAL,修改两个类Category.cs和Item.cs,改为继承自ICategory和IItem,注意添加using WestGarden.IDAL; using WestGarden.IDAL;public class Category:ICategory using WestGarden.IDAL;public class Item:IItem 六、应用层Web中,添加引用→项目→BLL,把所有原来引用DAL的地方,主要是几个用户控件,包括NavigationControl.ascx.cs、ItemDetailsControl.ascx.cs、ItemsControl.ascx.cs和ItemManageControl.ascx.cs修改为引用BLL,即所using WestGarden.DAL;替换为using WestGarden.BLL; 设计模式的师祖GoF,有句名言:Program to an interface, not an implementation,意思是说,要对接口编程而不要对实现编程。        我们前面使用的两层结构,已经能比较好的解决数据库的查询、更新、插入和删除等基本操作,并以优美的界面呈现给客户。现在的问题是,如果数据库换成Access,你该怎么办?再换成Oracle、Excel......,头是不是很大??数据访问层肯定要换,用户界面层,也要做不小的改动。        业务逻辑层的出现,就是为了解决这一问题的。        三层结构后,应用层就不再直接面向数据访问层,而是面向业务逻辑层了。        看下面的代码,业务逻辑层好象并没有做什么大的工作,只是把数据访问层中的类实例化一下,调用里面的函数,再转交给应用层,完全是多了一道手续嘛......      的确,手续是多了一道,由原来的应用层直接找数据访问层变成了,应用层找业务逻辑层,再由业务逻辑层找数据访问层。而问题的关键也就在这里,你仔细一下业务逻辑层里,是怎么实例化数据访问层里的类的:private staticreadonlyICategory dal =new WestGarden.DAL.Category();和private staticreadonlyIItem dal =new WestGarden.DAL.Item();注意,这两个实例化语句,实例化后的指针是ICategory和IItem,也就是说,通过业务层,应用层面向的不再是数据访问层了,而只是个接口。数据访问层以后如果有什么变化,就与应用层没有关系了。        这里有个比方,比方说我们的计算机主机,从外部读取、写入数据,是通过USB接口的,而插在USB接口的是U盘,还是移动硬盘,甚至是MP3,都与计算机主机无关,不会因为外部设备的这些变化而去重新打造我们的主机。        接口的作用,就在这里,采用这种面向接口的三层结构,如果数据库变成了Access、Excel甚至Oracle,你只需要重新做个数据访问层,继承接口中的类,或者说是实现接口规则,然后修改一下业务逻辑层的这个语句就可以了:private staticreadonlyICategory dal =new WestGarden.DAL.Category();和private staticreadonlyIItem dal =new WestGarden.DAL.Item();

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:不干胶、热敏打印(不干胶热敏打印纸在哪买)
下一篇:谷歌浏览器安装插件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~