我想在我的项目域层(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个子类?