Skip to content

Instantly share code, notes, and snippets.

@riccjohn
Last active November 22, 2019 22:07
Show Gist options
  • Save riccjohn/dbda4044f061652b02ef1b8ac9164365 to your computer and use it in GitHub Desktop.
Save riccjohn/dbda4044f061652b02ef1b8ac9164365 to your computer and use it in GitHub Desktop.
// A dog has bark + eat
class Dog {
let dogBark = BarkingSkill()
let dogEat = EatingSkill()
public func bark() {
dogBark.bark()
}
public func eat() {
dogEat.eat()
}
}
// A robot has clean
class Robot {
let robotClean = CleaningSkill()
public func clean() {
robotClean.clean()
}
}
// A robot dog has barker + cleaner
class RobotDog {
let dogBark = BarkingSkill()
let dogClean = CleaningSkill()
public func bark() {
dogBark.bark()
}
public func clean() {
dogClean.clean()
}
}
var Quinn = Dog()
Quinn.bark() // "woof!"
Quinn.eat() // "nom nom nom"
var Alfred = Robot()
Alfred.clean() // "Cleaning! beep boop"
var Sparky = RobotDog()
Sparky.bark() // "woof!"
Sparky.clean() // "Cleaning! beep boop"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment