工厂模式IDAL详解

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类)必须执行这些新增加的方法!

工厂模式IDAL详解

时间: 2024-11-08 12:03:55

工厂模式IDAL详解的相关文章

工厂模式--实战详解

工厂模式:有很多解释,我这里把我所理解的结合经验,诠释给大家:公司有个这样一个需求,在App中要使用到LBS定位来实现某些功能.产品技术一大堆开始了需求.技术确认会,当大家讨论到定位是用百度API来实现,还是用高德来实现.大家争论不休,有人说百度定位不准,有人说高德定位不准,众说纷纭.咋办?最后,B总拍板,两个一起用,哪个好用哪个,领导拍板了,但说了又等于没说,咋办?工厂模式这时候就呼之欲出了,我两个都给你设计,代码设个开关和参数,你说用高德不爽,我改个参数,就换百度,直到领导高兴为止,于是代码

Java多线程编程中Future模式的详解<转>

Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Future模式,关于其他多线程设计模式的地址如下:关于其他多线程设计模式的地址如下:关于Master-Worker模式的详解: Java多线程编程中Master-Worker模式的详解关于Guarded Suspeionsion模式的详解: Java多线程编程中Guarded Suspeionsion模式

Kafka单机、集群模式安装详解(二)

本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11) 接上篇 Kafka单机.集群模式安装详解(一) 6. 单节点多Broker模式 Kafka使用可以有多种模式,包括单节点单Broker,单节点多Broker,多节点多Broker. 这里我们简单区分一下: 单节点单Broker:在单台机子上,启动了一个Kafka实例(上一篇就是这种模式). 单节点多Broker:在同一台机子上开启多个Kafka(类似H

C#中的IDisposable模式用法详解

本文实例讲述了C#中IDisposable模式的用法,针对垃圾资源的回收进行了较为详细的讲解.分享给大家供大家参考之用.具体方法如下: 首先,对于垃圾回收而言,在C#中,托管资源的垃圾回收是通过CLR的Garbage Collection来实现的,Garbage Collection会调用堆栈上对象的析构函数完成对象的释放工作:而对于一些非托管资源,比如数据库链接对象等,需要实现IDisposable接口进行手动的垃圾回收.那么什么时候使用Idisposable接口,以及如何使用呢? 先来参考一

LVS负载均衡群集(三种工作模式原理详解)

LVS负载均衡群集(三种工作模式原理详解) 一.前言 ? 在互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求越来越高,单台服务器力不从心.所以我们需要通过一些方法来解决这样的瓶颈. ? 最简单的方法就是使用价格昂贵的大.小型的主机:但这样在大多数企业中显然是不可取或者说不现实的.那么我们就需要通过多个普通服务器构建服务器群集. 二.相关概念概述 2.1何为LVS? ? LVS--Linux Virtual Server,即Linux虚拟服务器(虚拟主机.共享主机),虚拟主

phpwamp单身狗模式的详解与分析,单身狗模式/即霸体模式的作用讲解。

最近有学生在使用PHPWAMP的时候,问我霸体模式的作用. 学生问:老师,PHPWAMP里面的霸体模式是什么意思,有什么用? 回答:额...就是以前我发布测试版的时候,模式切换里面的单身狗模式. 学生:单身狗?我表示测试版我没有用过啊.... 早在PHPWAMP8.1.8.8正式版发布之前,我曾经对部分用户发布了8.1.8.8的测试版,测试版里新增了"共生模式"与"单身狗模式",发布没多久网友就纷纷向我吐槽.... 网友A:单身狗模式是什么鬼,名字能不能取的好听点

【转】VMware虚拟机三种网络模式超详解

[原文]https://www.toutiao.com/i6596228488666022403/ 由于Linux目前很热门,越来越多的人在学习Linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有VMware Workstations和VirtualBox等. 在使用虚拟机软件的时候,很多初学者都会遇到很多问题,而VMware的网络连接问题是大家遇到最多问题之一.在学习交流群里面,几乎每天都会有同学问到这些问题,写这篇详解也是因为

易集分系统开发模式系统详解

易集分系统开发(李想.185.6504.8478)SirTim Berners-Lee(Web创始者)关于语义网的观点成为人们的重要关注已经很长一段时间了.事实上,它已经象大白鲸一样神乎其神了.总之,语义网关涉到机器之间的对话,它使得网络更加智能化,或者象Berners-Lee描述的那样,计算机"在网络中分析所有的数据-内容,链接以及人机之间的交易处理".在另一个时候,Berners-Lee把它描述为"为数据设计的似网程序",如对信息再利用的设计. <易集分&

CentOS下Hive2.0.0单机模式安装详解

本文环境如下: 操作系统:CentOS 6 32位 Hive版本:2.0.0 JDK版本:1.8.0_77 32位 Hadoop版本:2.6.4 1. 所需要的环境 Hive 2.0需要以下运行环境: Java 1.7以上(强烈建议使用Java 1.8) Hadoop 2.X 2. 下载.解压Hive安装包 Hive官网地址: http://hive.apache.org/ 例如: wget "http://mirrors.cnnic.cn/apache/hive/hive-2.0.0/apac