清洁架构中的单一职责原则,在一个UseCaseManager中聚合用例,该用例可以基于In&出对象。 [英] Single Responsibility Principle in Clean Architecture, Aggregating UseCases in one UseCaseManager which can provide UseCase based on In & Out Object.
问题描述
我想在我的项目域层(干净MVVM)中实现单一职责原则。
I want to implement Single Responsibility principle in my projects Domain layer (Clean MVVM).
我大约200个不同的用例正在忙于管理。现在,我正在考虑创建一个UseCaseManager,它可以基于Input&输出对象。
I've approx. 200 different use-cases which are being very hectic to manage. Now I'm thinking to create one UseCaseManager which can provide me required UseCase based on Input & Output Object.
我尝试了一种方法,但效果并不理想。我提到了一些示例代码,请帮助我如何将所有UseCases汇总到一个UseCaseManager。
I've tried an approach but that's not looking very good.I'm mentioning some sample code, Please help me how can I aggregate all the UseCases to one 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可以是具有不同In&出对象。
T can be different UseCase with different In & Out Object.
UseCaseManagerImpl:
public class UseCaseManagerImpl implements UseCaseManager {
@Override
public Object getUseCase(Object object1, Object object2) {
return null;
}
}
现在这是主要问题,我不是能够理解。我该如何实现getUseCase方法。
Now this is the main problem, I'm not able to understand. How can i implement getUseCase method.
推荐答案
我认为您正在重新发明抽象工厂模式。 Google将为您提供有关该主题的大量内容。
I think you're re-inventing the abstract factory pattern. Google will provide you with lots of content on that subject...
棘手的是,您如何确定要实例化并返回哪个子类型;可以像switch语句一样简单,也可以包含查找表等。关键点是,您可以将该逻辑隔离到一个地方,可以在其中进行单元测试。
The tricky bit is how you decide which subtype to instantiate and return; that can be as simple as a switch statement, or involve lookup tables, etc. The key point is that you isolate that logic into a single place, where you can unit test it.
一个更大的问题是-您如何最终得到200个子类?
A bigger question is - how do you end up with 200 subclasses?
这篇关于清洁架构中的单一职责原则,在一个UseCaseManager中聚合用例,该用例可以基于In&出对象。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!