mysql工厂模式_工厂模式IDAL详解

IDAL 一、 IDAL主要功能: 1、这完全是工厂模式的一部分实现而已 2、这是一组接口类,其中包括了每个要公开的数据访问方法。为每个数据库产品单独编写的DAL(数据访问层)都要实现这组接口所定义的方法 3、也就是规定了在DAL中编写的对用户账号进行操作的类

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

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IBLL、IDAL和DTO是指在软件开发中,常见的三个层次的接口定义。IBLL代表业务逻辑层接口(Interface of Business Logic Layer),IDAL代表数据访问层接口(Interface of Data Access Layer),DTO代表数据传输对象(Data Transfer Object)。 IBLL接口定义了业务逻辑层需要提供的方法和功能,用于处理业务逻辑,并与数据访问层进行交互。它通常定义了一些对业务实体进行操作的方法,如增删改查等。 IDAL接口定义了数据访问层需要提供的方法和功能,用于与数据库进行数据交互。它通常定义了一些对数据库进行操作的方法,如增删改查等。 DTO是一种用于数据传输的对象,用于在不同的层次之间传递数据。它通常包含了与业务实体对应的属性,并且不包含业务逻辑。DTO可以在不同的层次之间进行数据传递,避免了直接传递实体对象可能带来的潜在问题。 在一个典型的三层架构中,IBLL接口定义了业务逻辑层的功能,IDAL接口定义了数据访问层的功能,而DTO则用于在业务逻辑层和数据访问层之间传递数据。通过这种方式,可以将不同层次的功能进行解耦,提高代码的可维护性和可扩展性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [petshop3层架构范例,供新手学习,Model+DAL+IDAL+DALFactory+BLL](https://download.csdn.net/download/appleyounger123/4135693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别](https://blog.csdn.net/yaluwang/article/details/40377901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [MVC入门 框架介绍(1)](https://blog.csdn.net/anjingyatou/article/details/18225239)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值