参考URL:
・Dependency Injection Framework for Swift
・[Swift] DIって何? 実践編
protocol AnimalType {
var name: String { get }
func sound() -> String
}
class Cat: AnimalType {
let name: String
init(name: String) {
self.name = name
}
func sound() -> String {
return "Meow!"
}
}
class Dog: AnimalType {
let name: String
init(name: String) {
self.name = name
}
func sound() -> String {
return "Bow wow!"
}
}
class PetOwner {
let pet: AnimalType
init(pet: AnimalType) {
self.pet = pet
}
func play() -> String {
return "I'm playing with \(pet.name). \(pet.sound())"
}
}
let catOwner = PetOwner(pet: Cat(name: "Kitty"))
print(catOwner.play())
//=> "I'm playing with Kitty. Meow!\n"
let dogOwner = PetOwner(pet: Dog(name: "Rocky"))
print(dogOwner.play())
//=> "I'm playing with Rocky. Bow wow!\n"