本帖最后由 ngdly 于 2011-06-24 21:45:01 编辑

解决方案 »

  1.   

    这个问题,见仁见智吧。个人简单的理解为:展现层 引用 逻辑层,逻辑层 引用 数据层。
    程序比较庞大的时候分层的效果比较明显,降低层之间的耦合,逻辑复用度高。
    比如楼主提到的common 基础类,不就是这个思想么。比如:在每个修改数据库的动作前都要先去数据库验证客户的合法性,那么便把“验证客户的合法性”抽出来放在逻辑层,同时在 数据层 定义“客户信息”的数据模型。而“客户信息”的数据模型 在客户管理模块也会用到。这样能让每一层的代码简洁一些,分工也更加明确。
    数据层只提供数据,不做任何业务处理。判断,验证,加工,处理,那是逻辑层的工作。当然,上面这些仅是自己的想法而已。楼主可以参考下流行框架。
    这是一个开发成本,维护成本,资源成本的综合问题。
      

  2.   

    三层的坏处:(1)多层虽然使得替换某层的实现变得容易,但是修改接口则变得困难。
    (2)增加了代码量,并且使得代码调试变得困难。如果每层只有一个实现,那么还得写一次接口,再写一次实现。因为层与层通过接口通信,所以静态状态下无法知道是什么代码出了问题。
    (3)降低了性能,分层依赖反射实现层的加载和替换,加上分层本身增加的代码,使得性能调优变得困难(为调优可能要改变接口,改变接口要修改所有实现,回到(1))。
    (4)增加了不必要的复杂度,复杂的东西容易出错,难以维护,这是常识问题。三层的谬误:
    (1)三层有利于协作开发。这是扯淡,除非这个作坊刚好3个人。如果10个人,难道分10层?
    (2)三层可以提高代码的质量,提高效率等等,扯淡,如果团队本身是新手构成的,三层的复杂度只会让团队更有效率制造垃圾。又一句经典的话是,这个世界上再也没有比有效地做无效的事情更无效的了。
    (3)三层有利于什么企业开发,适合开发什么大项目……这些都是传言。的确有分层架构的大项目,但是所占的比例并不高。即便分层,也不能说明用了三层就是大项目(刘翔早上都要吃个鸡蛋,不等于吃了鸡蛋的都能跑得快)
    (4)分层增加了灵活性,恰恰相反,分层只能使得代码笨重和不灵活。
    (5)MVC就是三层,什么DAL BLL PL(很多业余菜鸟管PL叫UI层,莫名其妙)三个类互相引用下就是三层,这些根本就是照猫画虎或者盲人摸象。总之,在很多人看来,三层就是个筐,软件开发什么问题都往里面装,加上三层百病全消,之所以人家消了自己没有消,还得反省自己是不是没有领悟三层……有很多人觉得人家都搞三层,那三层一定有它的好处。这些想法说明这些人的智力、逻辑分析能力之差真的不如去搞传销算了。