I think the only way is using inheritance (if it fits your needs. If not, please provide more details on how you want to use this protocol):
protocol Protocolable {
var data: Int { get }
func update()
}
class Dummy: BaseProtocolable {
//any specific to Device class code
}
class Device: BaseProtocolable {
//any specific to Device class code
}
class BaseProtocolable: Protocolable {
private(set) var data: Int = 0
func update() {
updateData()
}
private func updateData() {
data = 100
}
}