2017-05-05 74 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