清洁架构中的单一职责原则,在一个UseCaseManager中聚合用例,该用例可以基于In&出对象。 [英] Single Responsibility Principle in Clean Architecture, Aggregating UseCases in one UseCaseManager which can provide UseCase based on In & Out Object.

本文介绍了清洁架构中的单一职责原则,在一个UseCaseManager中聚合用例,该用例可以基于In&出对象。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的项目域层(干净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&amp;出对象。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆