加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

聚合 – 清洁体系结构中的单一责任原则,在一个UseCaseManager中聚合UseCases,它可以提供基于InOu

发布时间:2020-05-23 11:51:22 所属栏目:程序设计 来源:互联网
导读:我想在我的项目域层(Clean MVVM)中实现单一责任原则. 我约. 200个不同的用例,管理起来非常繁忙.现在我想创建一个UseCaseManager,它可以根据Input amp;提供我所需的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个子类?

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读