面向协议编程(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想到的一些解决方案?
- 将run方法放到另一个对象A中,然后BVC、DVC拥有A属性--多了一些额外的依赖关系
- 将run方法增加到UIViewController分类中--UIViewController会越来越臃肿,而且会影响它的其它所有子类
- 将run方法抽取到新的父类,采用多继承?Swift不支持多继承-(C++支持多继承)
原文地址:https://www.cnblogs.com/guohai-stronger/p/12359303.html
时间: 2024-10-10 14:38:14