隔离的领域层

1. 目的

    将业务层的方法调用,变成非显式调用,有利于界面的自动化测试。

2. 动机

    在编写客户端代码的时候,很多Action 都是直接调用业务层方法(或者通过Presenter 负责调用),这样就会使界面的代码直接依赖业务层代码,在进行单元测试的时候会为业务层接口打很多的桩,工作量较大。而且界面的单元测试,主要是测试界面的布局、界面的逻辑和用户响应等,在单元测试阶段很少会涉及业务的逻辑。

3. 参与者

    1, Presentation: 主要负责界面的展现和用户操作的接受。

    2. Presenter: 主要负责用户的界面操作,转发用户的业务操作。

    3. Domain Binder: 主要负责连接表现层和领域逻辑层。

    4. Domain Accessor: 主要负责领域逻辑层的访问。

    5. Domain Logic: 主要负责处理业务逻辑。

4. 协作

   

说明:   

    1.图中的虚线为非显式调用;

    2.图中的实线为直接方法调用;

5. 实现

    实现流程图如下:

 

    由于只能加3个附件,所以其它流程图不能够加进来,具体可能参见源代码吗?

5. 结果

    表现层不直接依赖领域层,用户在进行业务操作时,Presenter 会将业务操作封装成一个Domain Event 发到Domain Accessor。 Domain Event 封装了操作的类型和参数。当系统需要多客户端同步时,Domain Accessor 会接收到领域层发来的事件,然后再将该事件转换成Domain Event 发出去,表现层会收到事件然后作相应的处理。

6. 特点

    优点:该模式有利于界面的单元测试或自动化测试,也使开发界面的人不关心业务逻辑,开发业务逻辑的人不关心界面,有利于合理的分工;

    缺点:用户操作被抽象成一个Domain Event,会使结构变的复杂,很难被理解。

7. 感谢

    感谢shaucle和BirdGu,他们提供了很多建设性的意见。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值