Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- protocol RemoteAccess {
- func addGadjet(gadjet: Entity)
- func removeGadjet(gadjet: Entity)
- func notifyGadjets(globalColor newColor: String)
- }
- protocol Entity {
- var name: String { get set}
- var isOn: Bool { get set }
- var color: String? { get }
- var owner: RemoteAccess? { get set }
- func updateColor(newColor: String)
- func switchState(isOn: Bool) -> Bool
- }
- class Owner: RemoteAccess {
- var globalColor: String = "#FF00FF" {
- willSet(newValue) {
- notifyGadjets(globalColor: newValue)
- }
- }
- var gadjets = [Entity]()
- class var sharedInstance: Owner {
- struct Static {
- static var instance: Owner?
- }
- if Static.instance == nil {
- Static.instance = Owner()
- }
- return Static.instance!
- }
- func addGadjet(toInsert: Entity){
- var found = false
- for gadjet in gadjets {
- if toInsert.name == gadjet.name {
- println("Already added")
- found = true
- }
- }
- if !found {
- gadjets.append(toInsert)
- }
- }
- func removeGadjet(toRemove: Entity) {
- var i = 0
- for gadjet in gadjets {
- if gadjet.name == toRemove.name {
- println(gadjet.name)
- println(toRemove.name)
- gadjets.removeAtIndex(i)
- break
- }
- i++
- }
- }
- func notifyGadjets(globalColor newColor: String) {
- for gadjet in gadjets {
- gadjet.updateColor(newColor)
- }
- }
- }
- class Gadjet: Entity {
- var type: String
- var name: String
- var isOn: Bool = false
- var color: String?
- var owner: RemoteAccess?
- func updateColor(newColor: String) {
- color = newColor
- }
- func switchState(isOn: Bool) -> Bool {
- if isOn { self.isOn = false }
- else { self.isOn = true }
- return self.isOn
- }
- init(name: String, type: String) {
- self.name = name
- self.type = type
- }
- }
- class Light: Gadjet {
- init(name: String) {
- super.init(name:name, type: "Light")
- }
- }
- var owner = Owner.sharedInstance
- var light = Light(name: "Hallway light")
- println(light.type)
- var fridge = Gadjet(name: "Bedroom Fridge", type: "Fridge")
- var bed = Gadjet(name: "Bathroom Bed", type: "Bed")
- owner.addGadjet(fridge)
- owner.addGadjet(bed)
- owner.addGadjet(fridge)
- println(owner.gadjets)
- owner.globalColor = "#FF00FF"
- println(bed.color!)
- println(fridge.color!)
- owner.globalColor = "#FFF000"
- println(bed.color!)
- println(fridge.color!)
- // println(owner.gadjets[0].name)
- // println(fridge.name)
- // if owner.gadjets[0].name == fridge.name {
- // println("equal")
- // }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement