您的位置:首页 > 其它

再谈分层--好吧,我承认这个话题有点俗

2008-06-15 01:22 316 查看
一.层是指什么?为什么要分层?
对于层的概念,我的理解是包括"抽象层"和"实现层", 即是OO五大原则之依赖倒置原则(DIP), 让你的应用依赖于抽象而不是具体实现. 最常见的做法是加入数据访问的抽象层, 以此来解除对数据库类型的依赖.

二.要分哪些层?
需要解藕哪些层, 就分出哪些层.

三.一般都需要解藕哪些层?
1.数据访问层, 解除对数据库类型的依赖.
2.实体层,这主要是因为在ORM的存在, 让Model变的臃肿, 违反了OO五大原则之单一职责原则(SRP):本来一个实体只有表示数据的职责, 现在还多了数据持久化的职责.如果说数据访问层或ORM解除了对数据库类型的依赖, 则数据访问层+实体层就是解除了对数据库类型和数据访问方式的依赖.对开发者来说, 好处就是前期可以使用ORM减少数据访问操作的复杂度, 后期可以根据需求,将部分实现替换成ADO.NET等高效率数据访问方式, 以扩展的形式快速的应对变化.附一个UML图:



3.业务逻辑层.
很少业务逻辑层能复杂到需要将每个功能都抽象出来, 所以并不需要做到上面两种那样.一般来说, 策略模式+模板方法模式就可以满足需求了.
4.表示层.
表示层的模式,常见的有MVC和MVP.MVC适合做展示数据的前台网站,MVP的特点是可以不依赖UI层,换句话说,你可以做一个Web的表示层,再做一个WinForm的表示层.至于WebForm模型, 能玩的花样很多, 关键看用的人的水平了.

有空打算写一个类似<<微型项目实践>>系列的文章, 说明如何开发一个可扩展,易测试,易修改的.NET项目,以及各种常用开发组件在项目中的使用,如企业库,NLog,PostSharp(AOP框架)等.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: