聚合 – 清洁体系结构中的单一责任原则,在一个UseCaseManager中聚合UseCases,它可以提供基于In&Out对象的UseCase.

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

我约. 200个不同的用例,管理起来非常繁忙.现在我想创建一个UseCaseManager,它可以根据Input& amp;提供我所需的UseCase.输出对象.

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

UseCase1:

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

UseCase2:

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

UseCaseManager:

public interface UseCaseManager<In,Out> {
    <T> T getUseCase(In input,Out output);
}

T可以是不同的UseCase,具有不同的In&出对象.

UseCaseManagerImpl:

public class UseCaseManagerImpl  implements UseCaseManager {

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

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

我认为你正在重新发明 abstract factory pattern.谷歌将为你提供有关该主题的大量内容……

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

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

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...