标签: interactors

清洁架构 - 如何解决数据库事务?

在"干净架构"中,交互者(用例)负责定义业务逻辑.大多数示例以这种方式定义用例:

public MyUseCase() {

  public boolean execute(...) {
    int id = repository.insert(a)
    if(id > 0) {
      b.aId= id;
      repository.insert(b);
      ...
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Interactors主要使用简单的CRUD操作或存储库查询.上面的示例在简单的情况下是同步的,但您可以使用异步解决方案(如回调或rxjava)以相同的方法找到repos.

但是用例不完整呢?例如,您不能100%确定插入后a它仍然会在插入时存在b.如果在插入后,a你得到一些RepositoryException同时插入b.

我到目前为止看到的所有回购都没有考虑到,所以我的问题是:

清洁架构中上述问题的解决方案是什么?

clean-architecture interactors

10
推荐指数
1
解决办法
793
查看次数

干净架构中的单一职责原则,将用例聚合在一个UseCaseManager中,它可以提供基于In & Out对象的UseCase

我想在我的项目域层(Clean MVVM )中实现单一职责原则

我有大约 200 个不同的用例,管理起来非常繁忙。现在我正在考虑创建一个UseCaseManager可以为我提供所需的UseCase基于Input&Output对象的对象。

我尝试了一种方法,但看起来不太好。我提到了一些示例代码,请帮助我如何将所有用例聚合到一个 UseCaseManager。

用例1:

public class ActualUseCase1 extends AsyncUseCase<Object3,Object4> {

    public ActualUseCase1(SchedulerProvider schedulerProvider) {
        super(schedulerProvider);
    }

    @Override
    public Flowable<Object4> buildUseCaseFlowable(Object3 input) {
        return Flowable.just(new Object4());
    }
}
Run Code Online (Sandbox Code Playgroud)

用例2:

public class ActualUseCase2 extends AsyncUseCase<Object1, Object2> {

    public ActualUseCase2(SchedulerProvider schedulerProvider) {
        super(schedulerProvider);
    }

    @Override
    public Flowable<Object2> buildUseCaseFlowable(Object1 input) {
        return Flowable.just(new Object2());
    }
}
Run Code Online (Sandbox Code Playgroud)

用例管理器:

public interface UseCaseManager<In, Out> {
    <T> T getUseCase(In …
Run Code Online (Sandbox Code Playgroud)

single-responsibility-principle use-case aggregation clean-architecture interactors

6
推荐指数
1
解决办法
1177
查看次数

我们如何使用 rspec 测试交互器组织者?

我想在组织者交互器下测试,调用 2 个指定的交互器而不执行调用交互器('SaveRecord,PushToService')代码。

class Create
  include Interactor::Organizer

  organize SaveRecord, PushToService
end
Run Code Online (Sandbox Code Playgroud)

我发现了几个例子,其中所有交互器逻辑的整体结果(记录应该被保存并推送到其他服务)已经过测试。但是,我不想执行其他交互器的逻辑,因为它们将作为其单独规范的一部分进行测试。

1. Is it possible to do so?
2. Which way of testing(testing the overall result/testing only this particular 
   organizer interactor behavior) is a better practise?
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails interactors

3
推荐指数
1
解决办法
1867
查看次数