`
380071587
  • 浏览: 445973 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 
阅读更多

源代码:13033480群共享

【操作步骤】

一、新建类库IDAL,设置属性,添加引用→项目→Model

二、添加类ICategory.csIItem.cs

1ICategory.cs

using System;
using System.Collections.Generic;
using WestGarden.Model;

namespace WestGarden.IDAL
{
    public interface ICategory
    {
        IList<CategoryInfo> GetCategories();
        CategoryInfo GetCategory(string categoryId);
    }
}


2IItem.cs

using System;
using System.Collections.Generic;

using WestGarden.Model;

namespace WestGarden.IDAL
{
    public interface IItem
    {
        IList<ItemInfo> GetItemsByCategory(string CategoryId);
        IList<ItemDetails> GetItemDetailsByItemId(int ItemId);
        void UpdateItem(ItemDetails item);
        void InsertItem(ItemDetails item);
        void DeleteItem(ItemDetails item);
    }
}


三、新建类库BLL,设置属性,添加引用→项目→ModelDAL

四、添加类Category.csItem.cs

1Category.cs

using 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<CategoryInfo> GetCategories()
        {
            return dal.GetCategories();
        }

        public CategoryInfo GetCategory(string categoryId)
        {
            if (string.IsNullOrEmpty(categoryId))
                return null;

            return dal.GetCategory(categoryId);
        }
    }
}


2Item.cs

using 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<ItemInfo> GetItemsByCategory(string CategoryId)
        {
            if (string.IsNullOrEmpty(CategoryId))
                return new List<ItemInfo>();
            return dal.GetItemsByCategory(CategoryId);
        }
        public IList<ItemDetails> 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.csItem.cs,改为继承自ICategoryIItem,注意添加using WestGarden.IDAL;

using WestGarden.IDAL;

public class Category:ICategory

using WestGarden.IDAL;

public class Item:IItem

六、应用层Web中,添加引用→项目→BLL,把所有原来引用DAL的地方,主要是几个用户控件,包括NavigationControl.ascx.csItemDetailsControl.ascx.csItemsControl.ascx.csItemManageControl.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();

注意,这两个实例化语句,实例化后的指针是ICategoryIItem,也就是说,通过业务层,应用层面向的不再是数据访问层了,而只是个接口。数据访问层以后如果有什么变化,就与应用层没有关系了。

这里有个比方,比方说我们的计算机主机,从外部读取、写入数据,是通过USB接口的,而插在USB接口的是U盘,还是移动硬盘,甚至是MP3,都与计算机主机无关,不会因为外部设备的这些变化而去重新打造我们的主机。

接口的作用,就在这里,采用这种面向接口的三层结构,如果数据库变成了Access、Excel甚至Oracle,你只需要重新做个数据访问层,继承接口中的类,或者说是实现接口规则,然后修改一下业务逻辑层的这个语句就可以了:

private staticreadonlyICategory dal =new WestGarden.DAL.Category();

private staticreadonlyIItem dal =new WestGarden.DAL.Item();

版权所有©2012,西园电脑工作室.欢迎转载,转载请注明出处.更多文章请参阅博客http://blog.csdn.com/yousuosi

分享到:
评论

相关推荐

    【王继彬】典型三层结构程序设计-第四节:业务逻辑层BLL

    【王继彬】典型三层结构程序设计-第四节:业务逻辑层BLL

    什么是三层架构_表现层/业务逻辑层/数据访问层

    三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

    工厂模式三层架构增删改查分页(BLL层使用事务)源码

    本软件是一个工厂模式三层架构例子程序(★特点与难点是在BLL层使用数据库事务,而...一般情况,我们可以在DAL层使用数据库事务,但较多的业务逻辑放在DAL层,使得BLL层和DAL层职责不清,不利于统一在BLL层编写业务逻辑

    asp.net2.0项目之Ajax三层个人网站小程序(VS2005+Access)

    Bll——业务逻辑层 Model——构造模型(对应数据库字段) 功能很简单,是学习Ajax/Atlas+MVC(三层)入门的好例子 注意:搭建的时候设置根目录下的AjaxMyPage为站点文件夹 可支持Sql、Access、xml三种数据库(在web...

    什么是系统的三层架构?

    三层架构(3-tierarchitecture)通常是指将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。目的是“高内聚,低耦合”的思想。  一、概念:  三层架构(3-tierarchitecture)通常是指将整个业务...

    三层架构及设计模式(抽象工厂实现)

    三层架构实现,把表现层(WebUI)与数据访问层(DAL)分开,使用业务逻辑进行处理(BLL), 避免了把数据信息暴露在表现层, 从而提供了程序的性能,使用业务逻辑处理与表现层进行交互, 把表现层的需求,通过...

    Java课程设计-基于java银行自助在线业务系统源码+项目说明.zip

    【资源说明】 该项目是个人毕设项目源码,评审分达到95分,都经过严格调试,确保可以运行!放心下载使用。...业务逻辑层 BLL 表示层 UI 主要功能实现 数据访问层 DAL 业务逻辑层 BLL 表示层 UI 三、运行结果

    #2 创建业务逻辑层.doc

    #2 |创建业务逻辑层 本文档是 Visual Basic 教程 (切换到 Visual C# 教程) 本教程中,我们将了解怎样将业务规则集中到在表示层与 DAL 之间,充当数据交互中介的业务逻辑层 (BLL) 中。

    基于java的网上招聘系统

    为了满足系统相应快速、便于操作、易于维护的要求,在软件架构上,采用三层体系结构:界面层UI、业务逻辑层BLL、数据访问层DAL;在设计实现上,我们采用:前端视图层、后台应用层;在体系结构上,我们采用的是.NET...

    ASP.NET高级编程:三层架构概述.pptx

    本次任务希望大家了解什么是三层架构,为什么使用三层,以及三层架构编程模式的原理、优势,为用三层架构模式编写校园BBS系统做好准备。 校园BBS “三层架构概述”知识要点 为什么要使用三层架构 什么是三层架构 三...

    教学信息系统 asp+sql

    此外,抽象出来的IDAL模块,除了解除了向下的依赖之外,对于其上的业务逻辑层,同样仅存在弱依赖关系,因为业务逻辑层只需实例化IDAL模块的接口类后,业务逻辑(BLL)层作为接口的访问控制部分,它处于数

    Ajax三层个人网站小程序

    DAL——数据层 IDAL——数据接口层(控制是选择什么类型的数据库) Bll——逻辑层 Model——构造模型(对应数据库字段) &lt;br/&gt;功能很简单,是学习Ajax/Atlas+MVC(三层)入门的好例子 注意...

    三层个人网站小程序(Ajax源码)

    三层个人网站小程序(Ajax) Ajax三层个人网站小程序 &lt;br&gt;DAL——数据层 IDAL——数据接口层(控制是选择什么类型的数据库) Bll——逻辑层 Model——构造模型(对应数据库字段) &lt;br&gt;功能很...

    简单三层代码生成器(Models DAL BLL)

    可以生成简单三层Models DAL BLL

    三层架构与设计模式思想

    ②业务逻辑层BLL:这一层是上下两层的纽带,它建立实际的数据库连接,根据用户的请求生成检索语句或更新数据库,并把结果返回给前端界面显示。这一层通常以动态链接库的形式存在,并注册到服务器的注册表中,它与...

    C#简单的三层机构BLL、Module、UI程序设计

    C#简单三层结构设计UI、BLL、DAL ...2)业务逻辑层(BLL),用来处理复杂的数据间的关系或者是业务间的关系; 3)数据库访问层(DAL),用来用来访问数据库的; 当然还会有,View(视图层),用来展示数据;

    C#代码模板生成器;Model层;DAL层;BLL层代码自动生成

    C#代码模板生成器; Model层;DAL层;BLL层代码自动生成; 连接数据库,查询表字段,创建数据模型; 查询表字段,构造数据逻辑; 查询表字段,构造数据库交互的代码。

    springboot-demo-helloworld-mvc

    三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、...

    C#课程设计大作业基于ASP.NET的集学生管理和教师资源的信息化管理系统.zip

    Model 模型层、 DAL数据访问层、 BLL业务逻辑层、 Web控制器层、 ImCore即时聊天websocket核心 C#课程设计大作业基于ASP.NET的集学生管理和教师资源的信息化管理系统,已获老师指导的高分项目。 目录结构 Model ...

Global site tag (gtag.js) - Google Analytics