相关疑难解决方法(0)

干净架构中的单一职责原则,将用例聚合在一个UseCaseManager中,它可以提供基于In & Out对象的UseCase

我想在我的项目域层(Clean MVVM )中实现单一职责原则

我有大约 200 个不同的用例,管理起来非常繁忙。现在我正在考虑创建一个UseCaseManager可以为我提供所需的UseCase基于Input&Output对象的对象。

我尝试了一种方法,但看起来不太好。我提到了一些示例代码,请帮助我如何将所有用例聚合到一个 UseCaseManager。

用例1:

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

用例2:

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

用例管理器:

public interface UseCaseManager<In, Out> {
    <T> T getUseCase(In …
Run Code Online (Sandbox Code Playgroud)

single-responsibility-principle use-case aggregation clean-architecture interactors

6
推荐指数
1
解决办法
1177
查看次数

在Java泛型中共享通配符

假设我有一个界面

interface Foo<T> { 
    void foo(T x); 
    T bar() 
}
Run Code Online (Sandbox Code Playgroud)

以及具有未知参数的此类对象:Foo<?> baz.然后我可以打电话baz.foo(baz.bar()).

但是,现在我需要将值baz.bar()放入集合中,baz.foo()稍后再调用它.就像是

List<???> list; // can I tell the compiler this is the same type as baz's wildcard?
list.add(baz.bar());
...
baz.foo(list.get(1));
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

List<Object> list;
list.add(baz.bar());
...
baz.foo((???) list.get(1)); // I can't write down the type I need to cast to
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

编辑:以上是从我的实际情况过分简化.说我们有

class Bar {
    private final Foo<?> foo;
    private List<???> list; // the type argument can be selected freely

    Bar(Baz …
Run Code Online (Sandbox Code Playgroud)

java generics bounded-wildcard

3
推荐指数
1
解决办法
269
查看次数