Шаблон наблюдателя в Swift

Я хочу реализовать шаблон наблюдателя, но я не нахожу подходящих конструкций языка программирования в Swift (также 2.0). Основными проблемами являются:

protocol а такжеextension не разрешает сохраненные свойства.В классах мы можем добавить сохраненные свойства, но мы не можем заставить подкласс переопределить некоторые из его унаследованных методов.

Это то, что я хочу:

{class|protocol|extension|whathaveyou} Sensor {
    var observers = Array<Any>() // This is not possible in protocol and extensions 
    // The following is does not work in classes
    func switchOn() 
    func switchOff()
    var isRunning : Bool {
        get
    }
}

class LightSensor : Sensor {
    //...
    override func switchOn() {
        // turn the sensor on
    }
}

// In the class C, implementing the protocol 'ObserverProtocol'

var lightSensor = LightSensor()
lightSensor.switchOn()
lightSensor.registerObserver(self) // This is what I want

И вот, что возможно, насколько мне известно:

class Sensor {
    private var observers = Array<Observer>()

    func registerObserver(observer:ObserverDelegate) {
        observers.append(observer)
    }
}

protocol SensorProtocol {
    func switchOn()
    func switchOff()
    var isRunning : Bool {
        get
    }
}

class LightSensor : Sensor, SensorProtocol {
    func switchOn() {
        //
    }
    func switchOff() {
        //
    }

    var isRunning : Bool {
        get {
            return // whatever
        }
    }
}

Но это не очень удобно, потому что обаSensor а такжеSensorProtocol должны идти рука об руку, и оба требования подклассLightSensor должен выполнить.

Есть идеи?

Ответы на вопрос(4)

Ваш ответ на вопрос