层的基本原则:上层只能使用同层及其直接的下层。
我们使用层并赋予每一层特定的含义和职责来划分系统。
但是层的基本原则会引发另一些问题
1、比如:有5个层,第5层需要一个功能,这个功能在第1层已经实现,那么则需要在2,3,4层涵盖这个功能(Facade),
这里有两种做法,组合和继承,设计原则告诉我们组合优先于继承,但是这样做如果有10、20、。。。更多个方法,这样就充斥着大量的
Facade方法,这时就不得不放弃组合,选择继承(仿PetShop的项目居多,BLL变成了DAL的Facade,其实三层的划分并不完善,用PetShop说这个有点不合适).
2、有时我们需要下层调用上层,这个我以前也讨论过,PetShop就是这个例子。http://www.cnblogs.com/bmrxntfj/archive/2008/07/08/1237968.html
要解决以上问题,必须做以下几点
1、改变分层基本原则:上层能使用同层及其直接或间接的下层
2、确定以某一层为中心。
3、只能上层调用下层,不允许下层调用上层。