我想创建一个既普通又灵活的自定义响应对象。
我根据亚马逊的API响应代码对此进行了模拟。
示例用法如下:
val response: AddProductResponse = shoppingcartService.addProduct(product)
我想的是:
错误代码应该支持模式匹配,我相信我可以使用特征正确吗?
寻求有关如何使用scala“最佳实践”进行设计的一些帮助。
这就是我的想法(伪代码),但请根据您的想法提供您的反馈,而不是基于我的想法。
trait BaseResponse {
def success: Boolean
def errorCode: ErrorCode
def errorMessages: List[String]
}
sealed abstract trait ErrorCode
case class OutOfStock() extends ErrorCode
case class ExceededMaxQuantity() extends ErrorCode
trait OutOfStock extends ErrorCode
case class AddProductResponse(products: Option[List[Product]]) extends BaseResponse
因此,上面的AddProductResponse是通用的,它会响应成功/失败,并返回错误代码和错误消息列表。 它的具体部分是,如果响应成功,它会返回产品列表(所以我将它包装在一个选项中)。
我从未在scala中设计过任何类/特质层次,所以我可以找到所有反馈。