接口的作用,欢迎大家指教

edwardfay 2007-06-29 10:59:40
最近进一家新公司 ,接手了一个项目,架构已经设计好了
基本的三层架构
WebUI
BS
Model
DataAccess

但是设计的人给BS层和DataAccess层对应的每个class加了一个接口
也就成了
WebUI
IDBS
BS
Model
IDDataAccess
DataAccess

在webui中new一个bs层的对象,还需要把这个对象转换成IDBS中对应的对象类型
不明白为什么要这么多此一举,欢迎大虾指点指点!
...全文
817 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoliangwh 2007-06-29
  • 打赏
  • 举报
回复
楼上的都有道理~~~
学习

Thanks~~~
guyehanxinlei 2007-06-29
  • 打赏
  • 举报
回复
学习一下
job_2006 2007-06-29
  • 打赏
  • 举报
回复
如果某天数据库变成Access使用OledbDataReader业务层原来用IDataReader的地方几乎不需变化

=================

如果我的程序里用的全部都是存储过程呢???
变成Access数据库的话,数据层还是要去变吧?????
lishijie910123 2007-06-29
  • 打赏
  • 举报
回复
值得学习
活靶子哥哥 2007-06-29
  • 打赏
  • 举报
回复
接口就是标准

国家规定A 电话必须有123456789这些键
你的工厂要生产电话就要按照这两个个规定 称之 你实现了这个接口
那么你的电话就有123456789这些键

实际中的例子吧 针对接口编程
如果你的一个方法 返回SqlDataReader
那么你想像如果他返回IDataReader是不是更好些?
如果某天数据库变成Access使用OledbDataReader业务层原来用IDataReader的地方几乎不需变化
vicqqq 2007-06-29
  • 打赏
  • 举报
回复
up
flashlove2008 2007-06-29
  • 打赏
  • 举报
回复
汽车的方向盘就是可以看做是一个接口,他有什么方法? 他有转向的方法,但他不需要
自己去实现汽车如何转向,只要告诉其它的其它部件,我调用转向的时候你们就给我转。。。。

写接口一般是高级行为,做设计的时候用的多,当两个程序员要相互调用的各自的程序的时候
就应该通过接口来调用,隐藏实现细节,对方要啥方法,我就在接口中定义这个几个方法,
如何实现不用对方知道,他知道调用这个几个方法就行了,其它的相关的方法根本不用对方知道,
这就达到了隐藏细节的目的,减少差错!
LifeForCode 2007-06-29
  • 打赏
  • 举报
回复
怎么不去问项目的设计师 ?

目的想必是 降低耦合
ilovethisweb 2007-06-29
  • 打赏
  • 举报
回复
帮顶一下
sunzhong2003 2007-06-29
  • 打赏
  • 举报
回复
楼主仔细研究一下PETSHOP3.0\4.0,的三层结构,你就知道,有些东西,是非常有用地
jinpeng_dotnet 2007-06-29
  • 打赏
  • 举报
回复
典型的工厂模式!
接口就是提供了一个方法而已。
便于更换数据库的。
关于这样的说法有很多,给你点资料,其实也都网上的,拿PEtShop为例,相当能说明问题了。
数据工厂层(DALFactory),为了简化数据库访问类的使用,通过反射,动态地在运行时加载正确的数据访问对象。工厂模式是设计模式的一种,以我理解就像Factory这个词一样,对于用户来说,工厂里产品如何生产的你不用知道,你只要去用工厂里生产出来的东西就可以了。工厂模式来实现了对SqlServer和Access数据库访问的操作,而逻辑层(BLL)不用知道也不用关心后台用的是哪一种数据库,它只要用接口(IDAL)就行了,接口中定义了要用的方法,当调用接口时会根据具体的情况再去调用底层数据访问操作。而现在这个DALFactory就是关键,当BLL层要操作数据库时,DALFactory会根据具体情况再去使用SqlServerDAL和AccessDAL实现IDAL层的接口。
DALFactory层专门管理DAL对象的创建,便于业务逻辑层访问。SQLServerDAL和AccessDAL层均实现IDAL层的接口,其中包含的逻辑就是对数据库的Select,Insert,Update和Delete操作。因为数据库类型的不同,对数据库的操作也有所不同,代码也会因此有所区别。
此外,抽象出来的IDAL模块,除了解除了向下的依赖之外,对于其上的业务逻辑层,同样仅存在弱依赖关系。
BLL是业务逻辑层的核心模块,它包含了整个系统的核心业务。在业务逻辑层中,不能直接访问数据库,而必须通过数据访问层。注意图中对数据访问业务的调用,是通过接口模块IDAL来完成的。既然与具体的数据访问逻辑无关,则层与层之间的关系就是松散耦合的。如果此时需要修改数据访问层的具体实现,只要不涉及到IDAL的接口定义,那么业务逻辑层就不会受到任何影响。毕竟,具体实现的SQLServerDAL和AccessDAl根本就与业务逻辑层没有半点关系。
这样系统上层只管调用,而下层来实现细节,上级只管发号施令,下级去干活。对于上层来说实现细节被隐藏了。

这些资料都是网上的,感觉很有道理在里面,因为我也是新手,一直也很关注这些问题。
新手的观点而已!
hanguoji84 2007-06-29
  • 打赏
  • 举报
回复
UP 我也想学习
xiaops2005 2007-06-29
  • 打赏
  • 举报
回复
我下载的一个论坛的代码也是有一个接口文件夹,专门放各种接口.
如果是一个人开发的话,不要接口应该比要接口还方便.但对于多人协作就不太好了。我的理解是接口就是方便团队协作吧。
chenshuliang 2007-06-29
  • 打赏
  • 举报
回复
顶,不太明白
edwardfay 2007-06-29
  • 打赏
  • 举报
回复
顶下先
HelloTWorld 2007-06-29
  • 打赏
  • 举报
回复
这只是个例子,用来说明接口的作用,你可以换连接方式,甚至以后如果有从xml度取数据,你可以不用动系统就可以安全的过渡过去。另外,我说明一下,这个东西这样写是不能同时连接两个数据库的。

我的msn:helloTWorld@hotmail.com 。有空可以加我,聊聊。
bidisty 2007-06-29
  • 打赏
  • 举报
回复
支持多种数据库㎕
edwardfay 2007-06-29
  • 打赏
  • 举报
回复
谢谢各位,至少知道了IOC是什么东东
aicode 2007-06-29
  • 打赏
  • 举报
回复
这个人水平不错.呵呵.想彻底的分层开发.就需要依赖于抽像而不是依赖于具体的东西.这也是面向对象最根本的原则.然后再建立工厂返回具体的类,当然也可以用IOC消除工厂类.
edwardfay 2007-06-29
  • 打赏
  • 举报
回复
各位做的系统换数据库的几率很大吗?

谢谢 HelloTWorld()
加载更多回复(5)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧