什么是Clean Architecture(域)中的业务逻辑

问题描述 投票:0回答:1

人们说业务逻辑应该在域层中处理。

但是我不太清楚Android中的业务逻辑是什么。

在我的项目中,当API请求成功时,我缓存了数据。如果API请求失败,请获取本地数据。

据我了解,这可能是一种业务规则。1. API请求2.如果API请求失败,则从本地加载数据。

我认为这种逻辑应该在存储库中完成。但是业务逻辑应该在域层中处理。

我误解了业务逻辑吗?

android business-logic clean-architecture
1个回答
1
投票

业务逻辑是指从API接收数据后所拥有的ifelse。假设您要使用Picasso加载图像。网址是:

https://.../imageId.jpg

但是首先,您需要获取此对象,该对象的JSON附加有ID:

{
 "id" : "1234123",
 "name" : "SomeName"
}

嗯,首先,您需要获取以下内容:

val request = repository.fetchTheObject()
//let's assume the result is successful
//start of the business logic
val imageId = request.id
if(id == WHATEVER){
val url = "someUrl/${id}.jpg"
someMutableLiveData.postValue(url)
}else{
 showSomeError()    
}
//end of business logic

然后在您的片段中,您将收到最终结果:

viewModel.someMutableLiveData.observe(this, Observer{
  Picasso.get().load(it).into(imageView)
})

换句话说:

业务逻辑是您需要对从真实来源(数据库,文件,网络API等)接收的数据执行的所有操作,以获得理想的结果

[对于Android:

  • Fragment / Activity与用户互动
  • ViewModel用于业务逻辑(有时当您具有if s / else的音调,很多for循环等音调时,Google建议使用附加到ViewModel的Presenter,从不这样做)
  • 存储库,只是一个接收数据的源(即使有时它是多余的,例如当您只有一个事实源时)

在您的情况下,业务逻辑正是您所描述的:如果您的请求失败,则获取本地数据,这是应用程序的业务逻辑。

我认为此逻辑应在存储库中完成。

好吧,我可以看到很多类似的例子,但这确实取决于,有时可能是正确的。但是,如果为了避免全部使用ViewModel而使用Transformations,则可以只在ViewModel中处理它,而不是Repository

© www.soinside.com 2019 - 2024. All rights reserved.