三层结构与多层结构

来源:互联网 发布:淘宝店装修代码 编辑:程序博客网 时间:2024/05/17 08:42

三层结构:  
   
  1.表现层(web页面或WinForm窗体等)  
  2.DAL   (数据访问层)  
  3.BLL   (业务层)   
    
    
多层结构:(没有什么固定的说法)  
   
  举一个的例子来说吧:  
   
  1.VO     (.net中通常叫Model层,java里面叫VO层,就是通常所说得值对象层,每一个数据库中的表对应VO层下面的一个类)  
   
  2.DBobject   (数据库访问层,最好采用"单态模式设计"即所有的方法都采用静态方法)  
  3.IDAL   (数据访问接口层)  
  4.DAL     (数据访问层)  
  注:2.3.4也统称数据访问层  
  这一层也可以用   Hibernate   技术来实现(.net   中叫   "NHibernate"     ,java中叫"Hibernate")  
   
  5.BLL     (业务层)  
   
  6.Tools   (工具层,也有叫Common通用层的,   DBobject   也可整合在这一层当中)  
   
  7.表现层  
   
  9.WebService层(必要的时候才会去用)  
   
  10.Factory(工厂模式层,例如:所有的DAL层的数据访问类都用这个工厂模式来生成,返回类的类型从IDAL层里面取相应的接口类)  
   
  当然还可以有   "门面模式"     等等..  
   
  以上说法不一定适合每个人的多层设计模式概念,只是个人理解而于,其实还有很多层次都要用到   接口层,不过一般的设计这已经足够了,大部份人都不怎么原意去作接口层包含我自己 .

 

 

请问使用三层结构中,Model实体类是用来做什么的,使用实体类有什么好处呢?

回答一:实体类做为数据容器,在层间传递

回答二:实体是用来存放信息的
实体可以分为持久化对象(与数据库对应)和业务对象(包含业务信息对象)
这两种对象之见是可以转换的. (我认为po/vo 对于SOA下的开发已经不是必须的了.我认为有PO就够了,并且可以更好的布局和使用,机于我理解的SOA :(  http://blog.csdn.net/Oceanson/archive/2007/05/17/1613879.aspx)

实体有很多好处,我举一个比较偏的例子
你有一个查询控件,包含了许多查询信息.比较bad的作发是在UI层根据用户输入的信息编辑一个sql 直接调DAL层拿数据.
稍微好点的做法在业务层写一个很多参数的方法,把用户输入的信息传递到业务层处理.这样写的缺点是你加一个参数就要改一次接口.当然你可以在c#里用Parameter+object[],或者用2.0中的Collection<T>.但第一种方式业务层很难处理,你的list必须是有规律的.第而种方法最大的缺点是范形不能用object.
我认为最好的方法就是使用实体.你有一个某中query的实体,把所有信息记录进去,传递到业务层处理.

原创粉丝点击