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

前端之家收集整理的这篇文章主要介绍了聚合 – 清洁体系结构中的单一责任原则,在一个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个子类?

猜你在找的设计模式相关文章