面向协议编程思想
1、开店的例子——面向过程(过程),面向对象(哪些对象)
2、面向协议编程考虑的重点是协议,一般思路:
1)把某些功能抽象出来,先定好协议
2)进行协议扩展
3)遵循者实现协议
案例分析
protocol SleepProtocal{
func sleep()
}
class Bird:SleepProtocal{
func sleep() {
print("闭着眼睛睡")
}
}
class Person:SleepProtocal{
func sleep() {
print("闭着眼睛睡")
}
}
思考:很多生物都是闭着眼睡,也就是sleep方法的实现是一样的,造成了大量的重复,每次都要写一遍。
怎么改进?把重复的代码抽出来
方案改进
扩展协议,在扩展中给出一个默认实现
extension SleepProtocal{
func sleep() {
print("闭着眼睛睡")
}
}
class Snake:SleepProtocal{
}
var s1 = Snake()
s1.sleep()
//如果某个遵循着需要单独的实现,重新实现即可。
class Fish:SleepProtocal{
func sleep() {
print("睁着眼睛睡")
}
}
var f1 = Fish()
f1.sleep()