今天我提出了一个问题,因为今天我有点迷茫。这个问题与Swift和协议有关,更多地涉及到面向协议的编程(POP)。
我读过相关文章,甚至看过一本书,但我仍然感到困惑。每个人似乎都说协议是一个很好的工具等等,但我并不真正理解它的威力。
我有一个问题,因为我正在编写一个名为Volume的类,它是表示一个音量对象的类。让我们说
struct Volume {
var value: Float = 1
var isLogScale: Bool = false
var maxLogVolume: Float = 6.0 // value in dB
var maxLinearVolume: Float = 1.0
let dynamicRange: Float = 50.0
func convertLinearToLog() -> Float {
// Do some maths
}
func otherFunction() {
print("Hello, I'm the most useless function in the world.")
}
}
这是一个典型的课程,没有什么特别之处。
但是...我是否应该更好地使用像这样的协议:
protocol VolumeProtocol {
var value: Float {get set}
var isLogScale: Bool {get set}
var maxLogVolume: Float {get set}
var maxLinearVolume: Float {get set}
let dynamicRange: Float {get}
func convertLinearToLog() -> Float
func otherFunction()
}
然后重新实现所有内容,例如
struct MyVolumeClass: VolumeProtocol {
// Same thing as before
}
我不太能回答这个问题,如果你能帮我理解什么时候需要使用"protocol",什么时候不需要,我会感激不尽。
VolumeProtocol
没有意义,因为我不认为您会有多个不同的类符合这个协议。 - Dávid Pásztor