Swift -POP( 面向协议编程)与OOP

Posted guohai-stronger

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift -POP( 面向协议编程)与OOP相关的知识,希望对你有一定的参考价值。

面向协议编程(Protocol Oriented Programming,简称POP),是Swift的一种编程范式,Apple于2015年WWDC提出的,如果大家看Swift的标准库,就会看到大量POP的影子。

同时Swift也是一门面向对象的编程语言(Object Oriented Programming,简称OOP),在Swift开发中,OOP和POP是相辅相成的,任何一方并不能取代另一方。

 

回顾OOP

OOP的三大特性:封装、继承、多态

继承的经典使用场合

当多个类(比如A、B、C类)具有很多共性时,可以将这些共性抽取到一个父类(比如D类),最后A、B、C类继承D类

技术图片

OOP的不足

但有些问题,使用OOP并不能很好的解决问题,比如如何将BVC、DVC的公共方法run抽取出来?

class BVC: UIViewController{
    func run() {
        print("run")
    }
}

class DVC: UITableViewController{
    func run() {
        print("fun")
    }
}

基于OOP想到的一些解决方案?

  1. 将run方法放到另一个对象A中,然后BVC、DVC拥有A属性--多了一些额外的依赖关系
  2. 将run方法增加到UIViewController分类中--UIViewController会越来越臃肿,而且会影响它的其它所有子类
  3. 将run方法抽取到新的父类,采用多继承?Swift不支持多继承-(C++支持多继承)

技术图片

 

以上是关于Swift -POP( 面向协议编程)与OOP的主要内容,如果未能解决你的问题,请参考以下文章

Swift系列三十三 - 面向协议编程

Swift 中的面向协议编程:是否优于面向对象编程?

swift面向协议编程(POP)的一些Tips

OOP 面向对象

Swift2编程之道:POP+MVVM

编程思想的理解(POP,OOP,SOA,AOP)