美文网首页
(二十七)[Swift]面向对象,还是面向protocol?

(二十七)[Swift]面向对象,还是面向protocol?

作者: 修行猿 | 来源:发表于2016-08-25 07:27 被阅读89次

1.面向对象有很多的耦合性,而面向protocol,就可以像零件一样一个一个安装到类上。比如

protocol Flyable {
    func fly()
}
extension Flyable{
    func fly(){
        print("我要上天啦")
    }
}

protocol Eatable {
    func eat()
}
extension Eatable{
    func eat(){
        print("遇佛吃佛,遇神吃神")
    }
}

protocol Runable {
    func run()
}
extension Runable{
    func run(){
        print("宝宝很能跑")
    }
}

protocol Jumpable {
    func jump()
}
extension Jumpable{
    func jump(){
        print("信不信我能跳上天")
    }
}

class Bird : Flyable,Jumpable{
    
}

class Pig: Eatable {

}

class Tiger: Eatable,Runable,Jumpable {
    
}
  • 可见通过protocol可以如此的方便进行功能模块的重用,如果上面的代码用类继承来实现,则很容易陷入全功能型接口的陷阱,你要建一个能吃能跑能跳的类来作为Tiger的父类吗?
  • 除此之外,上篇博客还说了可以对接口进行选择性实现,则这样就更加方便灵活
  • 而且,协议还能应用于struct,你用struct继承一个class试试?
struct Peopel : Eatable,Runable,Jumpable,Flyable {
    
}

相关文章

网友评论

      本文标题:(二十七)[Swift]面向对象,还是面向protocol?

      本文链接:https://www.haomeiwen.com/subject/dfgosttx.html