Last active
November 22, 2019 22:07
-
-
Save riccjohn/dbda4044f061652b02ef1b8ac9164365 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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