日期:2014-05-18  浏览次数:20446 次

今天面试了两个.net的程序员,提到了七层开发模式,我晕了
把factory和ioc各算成了一层,还有一大堆加起来一共七层,真的有这么多层吗?
ioc也可以算独立一层吗?真是晕倒了,天啊,层到底是什么概念啊~~~
我才没写程序一年,就进化到七层了~~~

------解决方案--------------------
好像微软的petshop 4.0层划分的就比较多吧
------------------------
petshop 4.0是标准的三层...不要以为一个项目就算一层...我一个系统20多个项目岂不是20多层?

层是逻辑上的概念不是物理的...
------解决方案--------------------
---DBUtility数据层基类
---DALFactory数据层工厂类
---IDAL接口层
---SQLDAL接口实现层
---Model实体类
---Logic业务逻辑层
---Web表示层
------解决方案--------------------

层的多少与项目复杂度直接相关,因此层数并不是固定的,

而层又分水平层、垂直层,

UI层、业务逻辑层、数据访问层 都是典型的水平层,实体层 则是 垂直层,

而所谓 外观层 则是对某些水平层的二次抽象,便于对象间协同工作。

楼主所说的 factory 和 ioc 都属于设计模式的概念,不应作为层考虑。

个人意见,仅供参考!
------解决方案--------------------
莫非HAPPENS就是lz面试的那个?这么激动的...呵呵

所以我上面说能把三层讲清楚就不容易了...

factory和ioc是什么?请去查清楚概念再想想它们和分层的关系...

分层是一种工程方法并非开发技术...

举个不太恰当的例子:
我现在穿T恤+牛仔裤+休闲鞋,当然我还穿内裤和袜子,然而所有人都知道我这身装扮的架构是上衣+裤子+鞋...没有人会拿自己的内裤出来炫耀...
天气再冷一些我会再加外套,更冷的时候我会再加保暖内衣...需求变化了,然而它的架构依然是上衣+裤子+鞋...
如果我去寒冷的北方会再加毛衣和大衣鞋子也会换成靴子袜子可能穿两双,如果我去登珠峰我会加更多更专业的御寒装备,需求变化导致我扩展我的架构...然而它的架构依然是上衣+裤子+鞋...不管我穿了多少条裤子它们只有一个功能——保护我的下肢——我认为它们是一个层次的东西...

工程方法是从实践中来到实践中去,是为了解决实际问题的...

化繁为简见功夫...化简就繁是庸才...
------解决方案--------------------
分层的目的
为了多人开发方便

1 开发 个人开发,我想怎么开发怎么开发,那是我的问题,分不分层无所谓的事情
多人协作开发
一人开发一个模块,各不相干的开发,那么模块之间的调用肯定是接口最恰当了

2 布署
布署你把bll.dll和model.dll放到二个服务器上.这,显然不恰当 ,那么分布式布署也仅仅是说web服务器和数据服务器不在同一服务器上

3 维护
如果bll出了问题那么我们更新一个bll然后再上传这个dll,显示是很方便的
事实上,就面对对像来说如果某一类某一方法出了问题,一般的解决方法是重写子类或是再继承一个类重写掉 这样不会影响其它类, 这就要求我们在开发时候一定要规化好类层次

事实上,分层主要是分类的层次,主要是为了方便维护和管理









------解决方案--------------------
七层的确夸张了点,说PetShop4.0只有三层的绝对没有认真分析过PetShop4,不过他的确是由三层演化出来的。一般的分层设计都是以三层为基。

PetShop4.0 总共有22个程序集,如果每个程序集算作一层的话,那绝对是疯子,22层!!!

实际上只是比三层多了一层中转,底层可以连接SqlServer或Oracle,而业务逻辑和UI都不需要修改代码,OCP原则。