对三层架构的简单改进

  三层架构是很常见的架构方式,被很多公司所使用,特别是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( );

}

    搞定。以后无论多少人访问,永远是一个对象。当然,如果想用泛型什么的,自由发挥了。

 

posted on 2014-01-23 01:12  风焰庄主  阅读(855)  评论(1编辑  收藏  举报

导航