您的位置:首页 > 运维架构 > 网站架构

对三层架构的简单改进

2014-01-23 01:12 134 查看
  三层架构是很常见的架构方式,被很多公司所使用,特别是asp.net。优点是使用简单,缺点是BLL层与DAL层经常会很多重复。

  今天不是要讨论它的优缺点,而是讨论使用它时存在的问题。
  我们在使用过程中,BLL层一般不会用来存储持久化的变量,而且BLL经常被这样使用的:

SomeBLL bll=new SomeBLL( );

bll.doSomething( );






  图1:DAL,BLL和Page的关系

  这就有个问题,如果有十个页面需要访问这个类,那么就需要创建十次这个变量。如果同时有一千人在访问,那可能是一万个BLL对象。还有,每个BLL对象,还要new一个DAL对象……

  当然,.net也不见得会这么傻,毕竟还有共用,垃圾回收机制等等。可是,我们真的有必要这么做吗?

  由于BLL对象一般不是用来储存持久化变量,里面只有一些逻辑方法,那么我们是否可以只创建一次BLL对象,而且是所有浏览的用户都使用同一个对象呢?
  当然是可以的,什么单例模式,什么工厂模式……今天,我们学一下 DataRow,也来使用一个自己的方式。



  图2:改进的设计
  

  我们使用BLLCreator来创建唯一的一个静态的SomeBLL。

public class BLLCreator

{

private static SomeBLL _someBll;

public static SomeBLL CreateSomeBLL( )

{

if(_someBll == null)

{

_someBll = new SomeBLL( );

}

return _someBll;

}

}

public class SomeBLL()

{

private SomeDAL someDal = new SomeDAL( );

protected internal SomeBLL()

{

// todo something init here

}

public void doSomething()

{

}

}

public class Page1:WebPage

{

SomeBLL someBll = BLLCreator.CreateSomeBLL( );

someBll.doSomething( );

}


搞定。以后无论多少人访问,永远是一个对象。当然,如果想用泛型什么的,自由发挥了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: