我想请问我这种写法算什么,它的利与弊 本帖最后由 ngdly 于 2011-06-24 21:45:01 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题,见仁见智吧。个人简单的理解为:展现层 引用 逻辑层,逻辑层 引用 数据层。程序比较庞大的时候分层的效果比较明显,降低层之间的耦合,逻辑复用度高。比如楼主提到的common 基础类,不就是这个思想么。比如:在每个修改数据库的动作前都要先去数据库验证客户的合法性,那么便把“验证客户的合法性”抽出来放在逻辑层,同时在 数据层 定义“客户信息”的数据模型。而“客户信息”的数据模型 在客户管理模块也会用到。这样能让每一层的代码简洁一些,分工也更加明确。数据层只提供数据,不做任何业务处理。判断,验证,加工,处理,那是逻辑层的工作。当然,上面这些仅是自己的想法而已。楼主可以参考下流行框架。这是一个开发成本,维护成本,资源成本的综合问题。 三层的坏处:(1)多层虽然使得替换某层的实现变得容易,但是修改接口则变得困难。(2)增加了代码量,并且使得代码调试变得困难。如果每层只有一个实现,那么还得写一次接口,再写一次实现。因为层与层通过接口通信,所以静态状态下无法知道是什么代码出了问题。(3)降低了性能,分层依赖反射实现层的加载和替换,加上分层本身增加的代码,使得性能调优变得困难(为调优可能要改变接口,改变接口要修改所有实现,回到(1))。(4)增加了不必要的复杂度,复杂的东西容易出错,难以维护,这是常识问题。三层的谬误:(1)三层有利于协作开发。这是扯淡,除非这个作坊刚好3个人。如果10个人,难道分10层?(2)三层可以提高代码的质量,提高效率等等,扯淡,如果团队本身是新手构成的,三层的复杂度只会让团队更有效率制造垃圾。又一句经典的话是,这个世界上再也没有比有效地做无效的事情更无效的了。(3)三层有利于什么企业开发,适合开发什么大项目……这些都是传言。的确有分层架构的大项目,但是所占的比例并不高。即便分层,也不能说明用了三层就是大项目(刘翔早上都要吃个鸡蛋,不等于吃了鸡蛋的都能跑得快)(4)分层增加了灵活性,恰恰相反,分层只能使得代码笨重和不灵活。(5)MVC就是三层,什么DAL BLL PL(很多业余菜鸟管PL叫UI层,莫名其妙)三个类互相引用下就是三层,这些根本就是照猫画虎或者盲人摸象。总之,在很多人看来,三层就是个筐,软件开发什么问题都往里面装,加上三层百病全消,之所以人家消了自己没有消,还得反省自己是不是没有领悟三层……有很多人觉得人家都搞三层,那三层一定有它的好处。这些想法说明这些人的智力、逻辑分析能力之差真的不如去搞传销算了。 关于反射的描述 求高效 好的方法根据自己词库提取文章中关键词 CollectionBase类的List是什么, 怎么样动态创建多个线程 随机数函数 app_code文件夹内的程序集不能添加引用吗? c# 处理多图片合并成一张大图的问题 dataset更新数据库 象棋游戏:抽象类里如何提供代表棋子位置的属性和方法? 读写文件!编码问题! vs2010的问题 异常详细信息: System.Data.OleDb.OleDbException: 至少一个参数没有被指定值。
程序比较庞大的时候分层的效果比较明显,降低层之间的耦合,逻辑复用度高。
比如楼主提到的common 基础类,不就是这个思想么。比如:在每个修改数据库的动作前都要先去数据库验证客户的合法性,那么便把“验证客户的合法性”抽出来放在逻辑层,同时在 数据层 定义“客户信息”的数据模型。而“客户信息”的数据模型 在客户管理模块也会用到。这样能让每一层的代码简洁一些,分工也更加明确。
数据层只提供数据,不做任何业务处理。判断,验证,加工,处理,那是逻辑层的工作。当然,上面这些仅是自己的想法而已。楼主可以参考下流行框架。
这是一个开发成本,维护成本,资源成本的综合问题。
(2)增加了代码量,并且使得代码调试变得困难。如果每层只有一个实现,那么还得写一次接口,再写一次实现。因为层与层通过接口通信,所以静态状态下无法知道是什么代码出了问题。
(3)降低了性能,分层依赖反射实现层的加载和替换,加上分层本身增加的代码,使得性能调优变得困难(为调优可能要改变接口,改变接口要修改所有实现,回到(1))。
(4)增加了不必要的复杂度,复杂的东西容易出错,难以维护,这是常识问题。三层的谬误:
(1)三层有利于协作开发。这是扯淡,除非这个作坊刚好3个人。如果10个人,难道分10层?
(2)三层可以提高代码的质量,提高效率等等,扯淡,如果团队本身是新手构成的,三层的复杂度只会让团队更有效率制造垃圾。又一句经典的话是,这个世界上再也没有比有效地做无效的事情更无效的了。
(3)三层有利于什么企业开发,适合开发什么大项目……这些都是传言。的确有分层架构的大项目,但是所占的比例并不高。即便分层,也不能说明用了三层就是大项目(刘翔早上都要吃个鸡蛋,不等于吃了鸡蛋的都能跑得快)
(4)分层增加了灵活性,恰恰相反,分层只能使得代码笨重和不灵活。
(5)MVC就是三层,什么DAL BLL PL(很多业余菜鸟管PL叫UI层,莫名其妙)三个类互相引用下就是三层,这些根本就是照猫画虎或者盲人摸象。总之,在很多人看来,三层就是个筐,软件开发什么问题都往里面装,加上三层百病全消,之所以人家消了自己没有消,还得反省自己是不是没有领悟三层……有很多人觉得人家都搞三层,那三层一定有它的好处。这些想法说明这些人的智力、逻辑分析能力之差真的不如去搞传销算了。