gpt4 book ai didi

aggregation - Clean Architecture 中的单一职责原则,在一个 UseCaseManager 中聚合用例,可以提供基于 In & Out 对象的 UseCase。

转载 作者:行者123 更新时间:2023-12-02 01:00:31 25 4
gpt4 key购买 nike

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

我有大约。 200 个不同的用例管理起来非常忙碌。现在我正在考虑创建一个 UseCaseManager,它可以根据输入和输出对象为我提供所需的用例。

我尝试了一种方法,但看起来不太好。我提到了一些示例代码,请帮助我如何将所有 UseCases 聚合到一个 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());
}
}

用例 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());
}
}

用例管理器:
public interface UseCaseManager<In, Out> {
<T> T getUseCase(In input, Out output);
}

T 可以是具有不同输入和输出对象的不同用例。

UseCaseManagerImpl:
public class UseCaseManagerImpl  implements UseCaseManager {

@Override
public Object getUseCase(Object object1, Object object2) {
return null;
}
}

现在这是主要问题,我无法理解。我如何实现 getUseCase 方法。

最佳答案

我认为您正在重新发明 abstract factory pattern . Google 会为您提供有关该主题的大量内容...

棘手的一点是你如何决定实例化和返回哪个子类型;这可以像 switch 语句一样简单,也可以涉及查找表等。关键是将该逻辑隔离到一个地方,在那里您可以对其进行单元测试。

一个更大的问题是 - 你如何最终得到 200 个子类?

关于aggregation - Clean Architecture 中的单一职责原则,在一个 UseCaseManager 中聚合用例,可以提供基于 In & Out 对象的 UseCase。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50998636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com