传统的J2EE系统的分层,一般是WEB展示层、Web控制层、业务逻辑层、数据访问层。
各层的职责比较简单,控制层仅处理Web参数与数据并传递给业务逻辑层。而具体的业务逻辑放在Service层即业务逻辑层中。同时,事务的控制边界也在这一层。Dao层对数据库的操作,更简单的理解为对SQL的拼装。
上面的各层泛泛来讲,都容易理解。具体用法上,又会有一些延伸。比如说Dao层,有的由一组Dao类来实现,有的则只有统一的Dao。这里的Dao类似一个工具类。比如使用ibatis2的时候,Dao可能只是一个Client及对应的xml。
问题:
在具体实施后,存在一些问题。往往一开始开发的时候,需求比较简单,各表都只需要增删改查。所以,往往类的创建往往是数据库导向的。即一张表对应一个Dao类/接口,进而又对应一个Service类/接口。
随着开发的继续,需求的补充,一些主业务表的Service往往贯穿整个业务系统的流程。自然而然,业务逻辑的代码开始膨胀。结果是主业务表的Service类异常的庞大。
因为领域模型是一个充血的模型,而目前传统的分层属于贫血的模型,转换差别比较大。如果是在原有的贫血模型基础上,再加入Facade层。
可是Facade层跟Service层到底有什么差别呢?如果没有严格的规则的话,最后只会导致Facade层是一个空壳。
是否有其他的解决方案呢?
- 大小: 27.9 KB
分享到:
相关推荐
正面 Facade的实现——软件设计模式
eclipse工程文件 包含代码 有助理解 门面(Facade)模式 <br>外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。 <br>医院的例子 <br>用一个例子进行说明,如果把医院...
facade应用的很好很实际的demo
session facade:基于在线式银行的应用 session facade 远程调用 EJB
23种设计模式的java实现之Facade模式,代码实现,可以参考
Wrapper facade pattern pdf files here. Wrapper facade pattern pdf files here.
设计模式之外观模式 facade 采用JAVA实现,请结合文档看,欢迎讨论。。
设计模式之门面模式(Facade模式),介绍门面模式,实际例子分析,代码讲解等
设计模式1,FACADE模式,Adapter facade Adapter singleton proxy
Laravel开发-symfonys-facade 为Laravel框架设计的symfonys立面。
提出了一种优化模式的多层架构体系,详细分析了Pet Shop的典型三层架构及使用的Factory模式、Duwamish的多层架构及使用的Facade模式,比较两者不足,综合各自优势,提出目标系统开发架构,更侧重于优化架构的设计、...
facade设计模式,写的很好,看看大神写的代码,
23种设计模式之十一(结构型模式)Facade模式
C++设计模式原理与实战视频...2-12 原型模式的实用工程技术——DRY原则与使用模式进行重构 3-1 适配器模式的定义、场景与实用工程技术:对象适配与类的适配 3-2 门面(外观)模式Facade的定义、场景与实用工程技术:LOD
Ajax中使用Facade外观(门面)模式的Eclipse版本的Demo.
将facade类设置成接口,应用facade模式的一个小程序,易于理解,附带类图
主要介绍了laravel5创建service provider和facade的方法,实例分析了laravel创建service、provider和facade类的具体步骤与实现技巧,需要的朋友可以参考下
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。