问一个关于软件设计的问题

Icedmilk 2011-10-29 09:37:33
最近看了一个视频 UML with Visual Studio 2010

跟着做了下

例子是个普通的三层结构,很简单,是个网站

三个工程
表示层 -> XXX.Web
业务层 -> XXX.Domain
数据层 -> XXX.Repository
依赖关系自然是从上到下的:
表示层 -> 业务层 -> 数据层

我的疑问是:
他的例子在业务层声明了一个接口 -> IRepository
然后再数据层实现了这个接口 -> SqlRepository
这样以来数据层的工程不就必须添加 业务层的引用了
也就是说数据层依赖于业务层了

这样岂不是循环引用了?
表示层 -> 业务层 <-> 数据层
...全文
205 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxmark 2011-10-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 icedmilk 的回复:]
什么个意思?

引用 2 楼 karascanvas 的回复:

IOC
[/Quote]
http://wenku.baidu.com/view/fdafbc89680203d8ce2f244d.html
Icedmilk 2011-10-29
  • 打赏
  • 举报
回复
什么个意思?
[Quote=引用 2 楼 karascanvas 的回复:]

IOC
[/Quote]
种草德鲁伊 2011-10-29
  • 打赏
  • 举报
回复
IOC
CalvinWang 2011-10-29
  • 打赏
  • 举报
回复
根据你所说的情况,的确是如此。
个人认为这样子是不太正确的用法。
一般来说,如果全部写在同一个专案,只以 folder 来分开,有时会犯了错也不知道
只需要简单把他分成三个独立的专案,就会清楚正不正确了
就像你说的:循环引用
wanghui0380 2011-10-29
  • 打赏
  • 举报
回复
逻辑和形式分开

lz看到实际是种形式

其实真正的设计不是围绕逻辑,而非围绕形式。

那么假设一切围绕逻辑,那么你就不会有这种疑问。因为所有的东西都从逻辑出发。比如挖一条隧道,从开始到结束这么挖是没问题滴,但是同样也可以从中间到两边,甚至可以多点同时挖掘

那么lz说挖这条隧道,到底谁依靠谁,是结束依赖开始,开始两边依赖中间,亦或一条线依赖另一条线,其实形式上并不重要,重要的是大家是根据同一个逻辑形态下的设计图纸,只要设计图纸报纸逻辑一致,你怎么挖都是对滴
Icedmilk 2011-10-29
  • 打赏
  • 举报
回复
楼上二位给力啊,解决了我一直以来的疑惑

其实那个视频里已经提到过IRespository的实现是用IOC/DI,当时也不明白怎么回事,现在了解一点了

但从工程角度的依赖是
表示层->业务层<-数据层

而逻辑上的依赖关系是
表示层->业务层->数据层

数据层可以对业务层的接口有不同的实现
业务层可一随意在不同的数据层实现之间进行切换

表示层和数据层被完全隔离了

有什么补充的吗?帮我理解一下

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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