美文网首页
面向协议编程

面向协议编程

作者: 张_何 | 来源:发表于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