面向協(xié)議編程思想
1编曼、開店的例子——面向過程(過程),面向?qū)ο螅男ο螅?br>
2、面向協(xié)議編程考慮的重點是協(xié)議秕硝,一般思路:
1)把某些功能抽象出來,先定好協(xié)議
2)進行協(xié)議擴展
3)遵循者實現(xiàn)協(xié)議
案例分析
protocol SleepProtocal{
func sleep()
}
class Bird:SleepProtocal{
func sleep() {
print("閉著眼睛睡")
}
}
class Person:SleepProtocal{
func sleep() {
print("閉著眼睛睡")
}
}
思考:很多生物都是閉著眼睡洲尊,也就是sleep方法的實現(xiàn)是一樣的远豺,造成了大量的重復(fù),每次都要寫一遍坞嘀。
怎么改進?把重復(fù)的代碼抽出來
方案改進
擴展協(xié)議躯护,在擴展中給出一個默認實現(xiàn)
extension SleepProtocal{
func sleep() {
print("閉著眼睛睡")
}
}
class Snake:SleepProtocal{
}
var s1 = Snake()
s1.sleep()
//如果某個遵循著需要單獨的實現(xiàn),重新實現(xiàn)即可丽涩。
class Fish:SleepProtocal{
func sleep() {
print("睜著眼睛睡")
}
}
var f1 = Fish()
f1.sleep()