`
三问飞絮
  • 浏览: 320637 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

关于分层原则疑惑——Facade层与Service层的划分标准?

 
阅读更多

 

 

传统的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:Facade的实现——软件设计模式

    在"facade-master"这个压缩包中,可能包含了一个关于Java实现Facade模式的实例。这个例子可能包含以下几个部分: 1. **子系统接口和实现**:例如,有三个子系统类,分别代表数据库操作、网络通信和文件处理。它们...

    C++ Facade模式

    1. **增加间接层**:引入Facade会增加一层间接性,可能会略微增加系统的复杂性。 2. **灵活性受限**:如果需要添加新的子系统功能,可能需要修改Facade,这违反了开闭原则。 总之,C++中的Facade模式是一种非常实用...

    session facade:基于在线式银行的应用

    在基于在线式银行的应用中,Session Facade扮演着至关重要的角色,它充当客户端与服务器端EJB之间的单一接口,协调并封装复杂的业务逻辑。 在描述的场景中,一个servlet需要处理从一个账户向另一个账户转账的请求。...

    FACADE模式

    2. **外观(Facade)**:是客户端与子系统之间的接口,它知道如何与所有子系统交互,并且提供了简单的接口供客户端调用。 3. **客户端(Client)**:通过调用外观对象的方法来请求服务,无须关心子系统的具体实现。 ...

    设计模式之Facade

    eclipse工程文件 包含代码 有助理解 门面(Facade)模式 <br>外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。 <br>医院的例子 <br>用一个例子进行说明,如果把医院...

    PureMVC实现与实践——教程.pdf

    PureMVC框架通过明确划分Model、View和Controller层,并通过Proxy、Mediator和Command等核心组件来降低各层之间的耦合度,从而实现了高内聚、低耦合的设计原则。这种设计方式不仅有助于提高代码的可读性和可维护性,...

    设计模式之外观模式 facade

    外观模式(Facade Pattern)是设计模式中的一种结构型模式,主要目的是为了解决复杂的系统接口问题,提供一个简单的统一入口,使得客户端可以更方便地使用系统。在Java中,外观模式通常用来隐藏系统的复杂性,对外只...

    NET平台的分层架构与设计模式应用研究.docx

    - **分层架构逐渐调用原则与单向调用原则**:高层级只能调用低层级提供的服务,不能反过来。 - **单一职责原则**:每个组件只负责一个功能。 - **开放-封闭原则**:对扩展开放,对修改封闭。 - **依赖倒转原则**:高...

    Facade模式

    2. **SubSystem Classes(子系统类)**:实现了Facade接口中定义的具体功能,它们是Facade与具体业务逻辑的桥梁。 Facade模式的优点: 1. **简单易用**:客户端只需要与Facade进行交互,减少了理解和处理复杂对象...

    facade设计模式

    ### Facade设计模式详解 #### 一、简介 在软件工程领域,设计模式是一种被广泛认可的解决特定问题的方法论。其中,`Facade设计模式`(外观模式)是一种结构型设计模式,它通过提供一个统一的接口来隐藏系统的复杂...

    Laravel开发-symfonys-facade

    综上所述,Laravel中的Symfony's Facade是实现高效开发的重要工具,它将Symfony组件与Laravel的优雅编程风格完美融合。通过理解和熟练使用Facade,开发者可以更好地利用这两个框架的优势,提升PHP应用程序的开发效率...

    MVC分层 PPT

    这一层的设计应遵循单一职责原则,每个服务类只负责一个特定的业务功能。 6. **门面模式(Facade)** 门面模式是一种结构型设计模式,常用于简化系统接口,为客户端提供一个统一的入口。在MVC架构中,门面服务通常...

    用三层架构与设计模式思想部署企业级数据库业务系统开发.doc

    在企业级数据库业务系统开发中,采用三层架构与设计模式思想是现代软件工程的关键实践。三层架构是一种逻辑上的分层结构,旨在提高系统的可维护性、可扩展性和可移植性。它主要解决了应用程序中业务逻辑、数据访问和...

    java实现的简单的应用facade模式范例

    3. **Client(客户端)**:客户端使用Facade对象来与子系统进行通信,无需直接与子系统中的多个对象交互。 在Java实现中,我们首先创建一个接口,这个接口代表Facade,例如: ```java public interface Facade { ...

    Command和Facade设计模式

    在软件设计模式的世界里,`Command`(命令)和`Facade`(外观)模式是非常重要的两种设计模式。它们分别服务于不同的目的,但都是为了提高代码的可读性、可维护性和灵活性。 `Command`模式是一种行为设计模式,它将...

    迪米特法则---门面Facade模式.docx

    门面(Facade)模式是一种设计模式,遵循迪米特法则,旨在简化子系统的使用,减少客户端与子系统之间的复杂依赖关系。迪米特法则主张一个对象应该尽量减少与其他对象的交互,只与直接的朋友交流,以此提高系统的内聚...

    Wrapper facade pattern

    **包装器外观模式(Wrapper Facade Pattern)** 包装器外观模式是一种软件设计模式,它将一个复杂的组件或者一组组件的接口进行简化,提供一个统一的、更易用的访问方式。这种模式通常用于隐藏底层系统的复杂性,为...

    simple log facade for java

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架提供了一个统一的接口,例如Log4j、Java Util Logging (JUL)、Logback等。这个设计使得开发者可以在不修改代码的情况下更换底层...

    设计模式之外观模式(Facade Pattern)

    3. **更好的划分职责**:外观模式可以作为子系统与客户端之间的边界,清晰地划分出各自的职责。 **外观模式的适用场景:** 1. 当系统有多个子系统,且客户端需要与所有子系统交互时。 2. 当子系统的接口复杂,需要...

Global site tag (gtag.js) - Google Analytics