面向协议编程思想

面向协议编程思想
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()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容