headfirst设计模式这本书真好,准备用一个月学完。书里讲得很清楚了。
设计原则:
1、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
2、针对接口编程,而不是针对实现编程。
书中的代码是用java写得,现在正用swift,便做个翻译,没啥技术含量。
protocol FlyBehavior {
func fly() ->Void
} protocol QuackBehavior {
func quack() ->Void
} class CannotFly:FlyBehavior {
init() { }
func fly() {
println("不会飞")
}
} class Quack:QuackBehavior {
init() { }
func quack() {
println("嘎嘎")
}
} class Duck {
var flyBehavior:FlyBehavior?
var quackBehavior:QuackBehavior? init() { }
func swim(){ }
func display(){ } func fly() {
flyBehavior?.fly()
}
func quack() {
quackBehavior?.quack()
}
} class MiniDuckSimulator:Duck {
override init() {
super.init()
} } let miniDuck = MiniDuckSimulator()
println("................")
miniDuck.fly()
miniDuck.flyBehavior = CannotFly()
println("................")
miniDuck.fly()