博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
工厂模式IDAL具体解释
阅读量:5278 次
发布时间:2019-06-14

本文共 1452 字,大约阅读时间需要 4 分钟。

 

IDAL

 

一、 IDAL主要功能:

1、这全然是“工厂模式”的一部分实现而已

2、这是一组接口类,当中包含了每一个要公开的数据訪问方法。为每一个数据库产品单独编写的DAL(数据訪问层)都要实现这组接口所定义的方法

3、也就是规定了在DAL中编写的“对用户账号进行操作的类”所必须运行的方法!

4、IDAL要达到的目的是:实现业务逻辑(BLL)与数据库訪问(DAL)的全然分离!!!

5、IDAL各个类(IDAL目录中的各个文件)划分或者说编制的原则,更趋向于“将对数据库的不同操作进行归类”,考虑的主要方面是数据库操作!!!比如,有对用户账号进行的一系列数据库操作,则将这一系列操作统一放置于IAccount接口(将来实现后的Account类)文件其中

 

二、实现细节:

1、IAccount.cs文件:为针对不同数据库产品编写的“操作用户账号的类”所必须实现的一系列方法定义契约

2、IInventory.cs文件:定义“操作库存量的类”所必须实现的一系列方法;或者说将操作库存量的一系列(全部)方法做一个汇总

3、IItem.cs文件:定义“操作某一Item的类”所必须实现的一系列方法。(Item在Model中定义了,是指详细某一类别的Product,如男猫或女猫)

4、对于当中的GetItemsByProduct()方法,返回的是一个ArrayList的接口类型(IList)的对象

(见问题部分!)

5、IOrder.cs文件:定义了一组DAL层中“操作用户订单的类”必须运行的方法。当中包含“加入一张新订单”的方法Insert()和依据一个已有的订单号取得此订单具体信息的方法                                     GetOrder(),此方法返回的是一个OrderInfo对象。(Model中的OrderInfo类模型定义了用户的某一张Order中相关的信息,如发货地点,总价,信用卡号码等等)

6、IProduct.cs文件:定义类一组在DAL层中编写的“对Product进行操作的类”

7、 IProfile.cs文件:定义一组在DAL层编写的“对用户Profile进行操作的类”

 

三、启示:

1、这样就能够让在BLL层仅仅针对IDAL层定义的接口进行编程(使用IDAL接口定义的这些方法)就能够了!!!不管在底层使用了什么厂家的数据库产品,有差别的仅仅是针对此数据库产品编写的DAL层(同样的方法,如SignIn()方法,对于不同的数据库产品,可能有不同的实现方式!),而不会影响到上层的BLL层已经编写好的内容!

2、从这里能够看到软件架构师和程序猿工作上的差别!架构师要负责的是搭建系统的层次结构,定义接口;而程序猿要负责的是针对接口的详细代码实现过程!

3、这个IDAL接口的使用,主要是为了保证在底层数据库实现,甚至数据库产品发生变化的时候,不须要对上层BLL层的业务逻辑进行大量的改动!BLL层针对IDAL接口编程就可以!!!

4、IDAL目录中定义的全部的接口中的全部的方法,包含了整个程序要对数据库进行操作的全部方法

5、因为PetShop仅仅是一个演示程序,所以若对数据库操作的某一类别(如对Account进行操作)中定义的“操作类”不够用(如除了接口中定义的几个方法外还须要其它Account操作),还能够在接口中追加其它的方法,用以约束DAL层的实现类(如Account类)必须运行这些新添加的方法!

转载于:https://www.cnblogs.com/mfrbuaa/p/4069159.html

你可能感兴趣的文章
css & input type & search icon
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
0320-学习进度条
查看>>
MetaWeblog API Test
查看>>
移动、尺寸改变
查看>>
c# 文件笔记
查看>>
类和结构
查看>>
心得25--JDK新特性9-泛型1-加深介绍
查看>>
安装NVIDIA驱动时禁用自带nouveau驱动
查看>>
HDU-1255 覆盖的面积 (扫描线)
查看>>
项目管理之路(1):初步踏入项目管理
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
php上传文件及头像预览
查看>>
大四java实习生的一些经历
查看>>
线程池的概念
查看>>
Oracle_Statspack性能诊断工具
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>