- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在尝试通过阅读名为 Ruby 中的实用面向对象设计
的书来理解 SOLID 原则。第一个原则是单一职责,我理解这个概念的方式是一个类/方法应该只有一个职责或改变的原因。
在下面的代码中,我有一个计算类,它负责 (4) 四种不同的操作,add
、subtract
、multiply
和divide
,这对我来说不符合单一职责理论。
有人可以如此友善地重构以下类以使其遵守单一职责
吗?
我知道这可能是一个非常自以为是的话题,但我真的需要更好地理解这个概念。
仅供引用 - 为简单起见,我只使用整数,我知道它不是除法和减法的理想选择。
class Calculate{
let num1:Int
let num2:Int
init(firstNum:Int, secondNum:Int){
num1 = firstNum
num2 = secondNum
}
func add()->Int{
let total = num1 + num2
return total
}
func subtract()->Int{
let total = num1 - num2
return total
}
func multiply()->Int{
let total = num1 + num2
return total
}
func divide()->Int{
let total = num1 / num2
return total
}
}
let operation = Calculate(firstNum:5 , secondNum:5)
print(operation.divide())
最佳答案
单一职责意味着类应该只有一个逻辑功能。
所以如果你有计算器,那是完全可以的,它可以计算。 “单一”并不意味着“单一方法”。计算器可以求和、除法等等,对吗?是的,这正是 Calculator 类方法应该做的。
例如,如果您想要连接两个计算器类,添加方法“connectToAnotherCalculator”是违反 SRP 的。正确的方法是创建连接器类,它应该处理计算器之间的通信。
关于swift - 我需要帮助重构代码以符合单一职责原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34356667/
我刚刚开始 iOS 应用程序开发,到目前为止,这是一次很棒的体验。 Apple 文档很棒,但我有一些问题不是技术性的,只有有经验的人才能回答。 我有一堆 UIViewController 处理它们控制
我几天前开始学习 react-redux-immutable,但我仍然对构建我的应用程序感到困惑。我有 php(symfony/laravel MVC 背景),所以要理解一些 javascript 概
每次查看 SharpDX 代码并尝试遵循 DirectX 文档时,我都会遇到困难。有没有一个地方清楚地列出了每个编号的类映射到什么以及它们存在的原因? 我说的是这样的事情: D
我正在使用 Robospice 库 创建应用程序。这是处理互联网连接的绝佳选择,因为库的核心是基于 Android 服务的,所以我们的连接与 Activity 生命周期无关。 我们正在创建我们的请求并
我可能在这里分析过度了,但是根据我对 MVC 的阅读,似乎有很多关于如何做事情的观点。 是否有一个“最佳实践”网站或文档来定义 MVC 各个部分的职责? 请记住,我使用 EF/Repository&U
我是一名优秀的程序员,十分优秀!