2017-05-05 48 views
4

我最近偶然发现了由Bob叔叔介绍的Clean Architecture,我很想知道Interactors是否可以执行其他交互器。干净的架构:结合交互器

例如,这些是我现在的交互器:getEmptyAlbums,getOtherAlbums。两者都具有分别与相册(相册模型的ArrayList)列表一起返回的回调。

我是否允许有一个叫做getAllAlbums的Interactor来执行其运行块中的前两个Interactors?

@Override 
public void run() { 
    getEmptyAlbums.execute();  
} 

void onEmptyAlbumsReceived(ArrayList<Album albums){ 
    getOtherAlbums.execute; 
} 
void onOtherAlbumsReceived(ArrayList<Album albums){ 
     mMainThread.post(new Runnable() { 
     callback.onAlbumsReceived(albums); 
    } 
}); 

回答

3

我一直在思考同样的事情,并找到很少的关于这个问题后,我得出的结论“是”这是可能的最佳选择。

我的理由如下:

  1. 单一责任:如果你不能总用例,那么每个人都可以不真正是单一的责任。没有聚合,这意味着领域逻辑最终在表现层,击败目的。
  2. DRY:用例可以共享,应该是有意义的。

为了保持单一职责,我会考虑限制聚合使用情况做,即执行这些用例和做任何最终转换。考虑到这个问题的年龄,我很想知道你用这种方式和你遇到的问题。

+1

(我刚刚搜索了这个问题),并且由于DRY原理而倾向于“是”。我可以看到一个'Interactor'对象(用例)创建一个新的'RequestModel'并将它传递给一个单独的'Interactor'对象。 但是,正如你所说,这个问题“很少”。 – emeraldinspirations

+1

我使用了执行其他交互器的交互器来避免我的表示层过于混乱和大,并且没有遇到任何问题。 –

+0

我以同样的方式看到它。有关此主题的更详细示例,请参阅https://plainionist.github.io/Implementing-Clean-Architecture-UseCases/ – plainionist