PetShop 中,BLL、DAL 中的类为什么不像 SQLHelper 一样都写成静态的?

wanbo 2006-11-27 12:00:01
是不是为了避免并发的问题?比如?
...全文
310 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ys119 2006-11-30
  • 打赏
  • 举报
回复
为了代码的扩展性,使用了基于接口的编程方式,而static方法是不能用于这一个方式的,因为比如就像petshop这样,调用方(比如BLL中)只需要知道IDAL,不用管具体知道具体是调用SQLServerDAL还是OracleDAL,这样好处就是松耦合,便于扩展,比如你一开始用SQLServer作数据库,你实现了一个SQLServerDAL,假如有一天换到Oracle,那你只要再去实现一个OracleDAL就可以了,而其它比如BLL都不需要有任何修改,这样就降低了维护成本。而假如你用了static的,那么就不能这么用了。
wanbo 2006-11-30
  • 打赏
  • 举报
回复
为了代码的扩展性,使用了基于接口的编程方式,而static方法是不能用于这一个方式的,因为比如就像petshop这样,调用方(比如BLL中)只需要知道IDAL,不用管具体知道具体是调用SQLServerDAL还是OracleDAL,这样好处就是松耦合,便于扩展,比如你一开始用SQLServer作数据库,你实现了一个SQLServerDAL,假如有一天换到Oracle,那你只要再去实现一个OracleDAL就可以了,而其它比如BLL都不需要有任何修改,这样就降低了维护成本。而假如你用了static的,那么就不能这么用了。

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

呵呵,现在我的想法和你的是一样的。就是为了实现接口编程。虽然DAL层中的类没有写成静态但实化的对象是静态的。所以这样看来 PetShop 要这样写,也纯粹是为了实现接口编程。像 SqlHelper 由于没有用接口所以才将类写成静态的。
wanbo 2006-11-28
  • 打赏
  • 举报
回复
up
屁屁 2006-11-28
  • 打赏
  • 举报
回复
能不能说的详细一点呢?我也想知道
HJS1820 2006-11-27
  • 打赏
  • 举报
回复
up.

只求一分....
ys119 2006-11-27
  • 打赏
  • 举报
回复
petshop是基于接口的编程,所以没有用静态的
sekone 2006-11-27
  • 打赏
  • 举报
回复
静态的 一个重要的原因是因为 会比较频繁的使用 静态的会一直在缓存中

所以公用类一般也是静态的

BLL、DAL的类使用没有SQLHelper使用频繁

pazuochuan 2006-11-27
  • 打赏
  • 举报
回复
up
wanbo 2006-11-27
  • 打赏
  • 举报
回复
up

62,047

社区成员

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

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

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

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