Clean Architecture(域)中的业务逻辑是什么
What is Business logic in Clean Architecture (domain)
人们说业务逻辑应该在域层处理。
但是我不太明白Android中的业务逻辑是什么。
在我的项目中,我在 API 请求成功时缓存数据。
如果 API 请求失败,获取本地数据。
据我了解可以是一种业务规则。
1. API请求
2.如果API请求失败从本地加载数据。
我认为这个逻辑应该在版本库中完成。
但是业务逻辑应该在领域层处理。
我是不是理解错了业务逻辑?
业务逻辑参考 if
s 和 else
s 你收到来自 API 的数据后。假设您要使用 Picasso
加载图像。 url 是:
https://.../imageId.jpg
但首先您需要获取此对象,该对象附加了一个 ID JSON:
{
"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 建议使用Presenter 附加到 ViewModel,从未做过)
- 存储库,只是一个接收数据的来源(尽管有时它是多余的,比如当你只有一个真实来源时)
在您的情况下,业务逻辑正是您所描述的:如果您的请求失败,则获取本地数据,这是应用程序的业务逻辑。
I think this logic should be done in the repository.
你可以做到,我见过很多这样的例子,这真的取决于,有时可能是正确的。但是如果你使用 ViewModel
来避免所有 Transformations
你可以在 ViewModel
而不是 Repository
.
中处理它
人们说业务逻辑应该在域层处理。
但是我不太明白Android中的业务逻辑是什么。
在我的项目中,我在 API 请求成功时缓存数据。
如果 API 请求失败,获取本地数据。
据我了解可以是一种业务规则。
1. API请求
2.如果API请求失败从本地加载数据。
我认为这个逻辑应该在版本库中完成。
但是业务逻辑应该在领域层处理。
我是不是理解错了业务逻辑?
业务逻辑参考 if
s 和 else
s 你收到来自 API 的数据后。假设您要使用 Picasso
加载图像。 url 是:
https://.../imageId.jpg
但首先您需要获取此对象,该对象附加了一个 ID JSON:
{
"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 建议使用Presenter 附加到 ViewModel,从未做过)- 存储库,只是一个接收数据的来源(尽管有时它是多余的,比如当你只有一个真实来源时)
在您的情况下,业务逻辑正是您所描述的:如果您的请求失败,则获取本地数据,这是应用程序的业务逻辑。
I think this logic should be done in the repository.
你可以做到,我见过很多这样的例子,这真的取决于,有时可能是正确的。但是如果你使用 ViewModel
来避免所有 Transformations
你可以在 ViewModel
而不是 Repository
.