Skip to content

Instantly share code, notes, and snippets.

View SamStone92's full-sized avatar

Sam Stone SamStone92

  • Gloucester, UK
View GitHub Profile
class GoodGuy{
private var characterState : CharacterState?
func setState(cs : CharacterState){
self.characterState = cs
characterState!.enterState()
}
}
protocol CharacterState{
func enterState()
}
class RunningState : CharacterState{
func enterState() {
print("Entering running state")
}
}
let goodGuy = GoodGuy()
goodGuy.setState(cs: WalkingState())
goodGuy.setState(cs: StandingState())
goodGuy.setState(cs: RunningState())
class BadGuy{
private var characterState : CharacterState?
func setState(cs : CharacterState){
self.characterState = cs
characterState!.enterState()
}
}
let goodGuy = GoodGuy()
let badGuy = BadGuy()
goodGuy.setState(cs: WalkingState())
goodGuy.setState(cs: StandingState())
goodGuy.setState(cs: RunningState())
badGuy.setState(cs: WalkingState())
badGuy.setState(cs: StandingState())
badGuy.setState(cs: RunningState())
protocol Observer{
var id : Int{ get }
func update()
}
class Subject{
private var observerArray = [Observer]()
private var _number = Int()
var number : Int {
set {
_number = newValue
notify()
}
get {
class BinaryObserver : Observer{
private var subject = Subject()
var id = Int()
init(subject : Subject, id : Int) {
self.subject = subject
self.subject.attachObserver(observer: self)
self.id = id
}
let subject = Subject()
let binary = BinaryObserver(subject: subject, id: 1)
let octal = OctalObserver(subject: subject, id: 2)
let hex = HexaObserver(subject: subject, id: 3)
subject.number = 15
subject.number = 2