我对dnn三层体系结构的理解(2):

  Dnn在DataProvider.vb中应用了Reflection factory模式和Singleton 模式,对这里Singleton 模式的应用理解的不透彻。
   我思考的过程:
   Singleton的应用场景是什么?全局访问和实例化控制。
   全局化访问好理解,为什么只能有一个实例我就不是很明白了。
   我能想到的原因:
   1. dataprovider实例因为长期使用,而且其本身占用资源较高,使用Singleton模式保证系统中只有一个静态实例,用长期占用空间换取因实例化而造成的时间上的浪费,以提高性能。这个原因只是为了提高性能,并不是必需的,那么这里有没有一个必需使用的原因呢?
   2.DataProvider是对数据库的一层抽象,或者说一个代理层,为其上层的业务逻辑层提供数据(通过idatareader),如果没有这层那么在业务逻辑层的对象中就需要写sql语句直接从数据库中取数据然后把取得的数据赋值给它的属性,在这种情况下业务对象访问的数据库只有一个!既然DataProvider是数据库之上的一个抽象层,那么只存在一个实例也是合情合理的。
   我不知道理解的对不对,期盼高手指点。
   学习了dnn的数据访问策略才真正明白什么是三层体系结构,像我们公司的门户系统及其他产品,号称是三层体系结构,在业务逻辑对象中写入sql语句,而且在业务逻辑对象的方法中直接返回表示层的东西,比如类似printweblist( out strHtml), strHtml 是一个经过格式控制的列表(<table> <tr>……)(令人崩溃) ,其实根本不分层,因为任何一层都和其他层都是紧耦合,改变了某一层是绝对要影响到其他层的,我跟同事说咱们的产品是一层结构,他们还认为我是开玩笑呢,呵呵

转载于:https://www.cnblogs.com/mapk/archive/2007/11/05/950367.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值