在干净的架构中结合使用 Cases/Interactors

Combining Use Cases/Interactors in Clean Architecture

我正在开发一个 Android 应用程序,其架构基于 Uncle's Bob Clean Architecture

到目前为止,我已经实现了很多 UseCases/Interactors 没有问题。

我有以下用例:

搜索房间

我的问题是:我应该创建一个交互器(SearchOrCreateRoomAndJoin),还是应该创建三个交互器(SearchRoom、CreateRoom 和JoinRoom ) 并根据我的用例描述组合它们?

示例:

 Room room = searchRoom.execute(roomOptions)

 if(room != null){

     joinRoom.execute(room)

 }else{

     Room room = createRoom.execute(roomOptions)

     joinRoom.execute(room)
}

重要的是,在我的应用程序的某些点上,我执行了一些交互器,例如 SearchRoom

在我看来,为了尊重单一职责原则,你应该开发三个交互器。如果你这样做,你就增加了代码的可维护性和重用性,因为你可以在其他场景中单独使用这些交互器。

将用例命名为JoinRoom(这里只用一个用例)

class JoinRoomUseCase( searchRepository : searchRoomRepository,
 createRoomRepository : CreateRoomRepository,
 joinRoomRepository : JoinRoomRepository){

            fun execute(param:Param){
                      if(searchRepository.findRoom){
                          joinRoomRepository.join()
                      }else{
                          val room = createRoomRepository.create()
                          room.join()
                      }
            }
}