<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="DALFactory与IDAL的区别" id="card1">
<p> 游客</p><p>
标题:DALFactory与IDAL的区别<br/>
正文:<br/>
  业务逻辑层调用IDAL接口是对的，但说这里体现不了接口的优势是错的，这里正是体现接口优势的地方！因为有了DAL层，软件可以轻易移植到不同种类的数据库上运行。不同种类数据库的具体编码不同，所以要分开实现，但无论数据库编码写么编，对于业务逻辑层来说，就是一个作用，保存数据！所以不同种类数据库DAL层都继承自IDAL，这样业务层就不用考虑调用的到底是哪种数据库来保存数据，只要按IDAL规定的方法存了就行。真正去存入数据库的时候，到底存到了哪种数据库里，就看对IDAL进行实例化的时候，生成的是哪种数据库的实例。接口中定义了要用的方法，当调用接口时会根据具体的情况再去调用底层数据访问操作。而现在这个DALFactory就是关键，当BLL层要操作数据库时，DALFactory会根据具体情况再去使用SqlServerDAL和AccessDAL实现IDAL层的接口。（通过反射，动态生成访问类是PetShop.SQLServerDAL还是PetShop.OracleDAL命名空间中的类）。web层--&amp;gt;BLL(使用Model)--&amp;gt;DALFactory（通过IDAL）--&amp;gt;具体DAL实现层（oracle或ms sql）--&amp;gt;持久存储。BLL层是怎么用到DALFactory的呢？？？请看下面的代码！！！private static readonly ICaiFang dal=DALFactory.DataAccess.CreatCaiFang();BLL调用工厂，工厂创建类调用方法，就看怎么实现IDAL，他就怎么调用。个人理解：BLL层只是调用方法，方法是IDAL规定，受IDAL约束，具体操作那种数据库看DALFactory生成的那种数据库的实例。（这样理解好像是错的，请看下面的解释）IDAL 是 DAL层的类要实现的接口DAL层的各类需要完成对数据库的访问，但是不同的数据库需要使用不同的DAL对象，这样对于BLL层来说 无法实现数据库无关性为了实现数据库无关性 可以将DAL对象转化为他所实现的接口类型，这样就和具体的数据库访问对象无关了也就是说说 DAL对象 实现IDAL接口 上层程序 在使用时不直接DAL对象，而是使用IDAL接口这里接口提供了充分的灵活性。这个接口是对不同数据库来的统一，就像是人，人可以是不同肤色，但他们都是人。人就<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=280&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=280&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=280&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=280&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=280&amp;Page=8">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=280">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=280">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>