美文网首页
面向协议编程

面向协议编程

作者: 张_何 | 来源:发表于2020-08-31 22:08 被阅读0次

    面向协议编程

    • 面向协议编程(Protocol Oriented Programming, 简称 POP),是 swift 的一种编程范式,apple 于 2015 年 WWDC提出,swift 标准库中能见到大量 POP 的影子
    • swift 也是一门面向对象的编程语言(Object Oriented Programming,简称 OOP),在 swift 开发中,oop 和 pop 是相辅相成的,任何一方并不能取代另一方
    • POP 能弥补 OPP 的一些设计上的不足

    OOP 的不足

    • OOP 有些先天性的不足,比如如何将 BVC、DVC 中的公共方法 run 抽取出来
    class BVC: UIViewController{
      func run() {
        print("run");
      }
    }
    
    class DVC: UITableViewController {
      func run() {
        print("run");
      }
    }
    
    • 基于 oop 想到的一些方案
      1.将 run 方法放到另一个类 A中,然后 BVC、DVC拥有 A属性。
      这种方式多了一些额外的依赖关系
      2.将 run方法增加到 UIViewController 分类中。
      这种方式会使 UIViewController 越来越臃肿,而且会影响它的其他所有子类。
      3.将 run 方法抽取到新的父类,采用多继承方式(C++支持多继承)
      这种方式会增加程序设计复杂度,产生另行继承问题,需要开发者额外解决。

    POP 的解决方案

    protocol Runnable{
      func run()
    }
    
    extension Runnable {
      func run() {
        print("run");
      }
    }
    
    class BVC: UIViewController, Runnable{
    
    }
    
    class DVC: UITableViewController,Runnable{
    
    }
    

    POP 注意点

    • 优先考虑创建协议而不是父类(基类)
    • 优先考虑值类型(struct、euum),而不是引用类型(class)
    • 巧用协议的扩展功能
    • 不要为了面向协议而使用协议

    相关文章

      网友评论

          本文标题:面向协议编程

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