码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-02-24 23:53:17      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:control   分类   prot   toc   fun   抽取   标准库   开发   回顾   

面向协议编程(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

标签:control   分类   prot   toc   fun   抽取   标准库   开发   回顾   

原文地址:https://www.cnblogs.com/guohai-stronger/p/12359303.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!