Swift中面向协议编程的示例
您是否听说过面向对象编程? 是的,当然。 OOP在当今非常普遍。
但是,面向协议的编程呢?
面向协议的编程(POP)最早由Apple在WWDC 2015中使用Swift 2.0引入,他们称Swift为POP,而不是像其他通用语言一样是OOP:Java,Python,C#等。
您可能会想:POP到底是什么?
1.什么是POP?
实际上,我们没有任何官方文档来定义POP,但是可以。 让我们仔细看看它的命名并进行比较:面向协议的编程与面向对象的编程。 显然,它们与“前缀:对象和协议”有很小的区别。 现在,尝试想象和思考面向对象的编程:这是什么? 我们为什么称其为OOP?
在OOP中,我们设计并关注“类”及其实例(称为“对象”),该实例可能包含数据,属性,方法,实现等。
→在面向对象编程中,我们专注于对象。
→我们可以推断:面向协议的编程,我们将尝试使用协议。
“而不是使用类,而是从协议开始”
2. POP的一个例子?
因为POP替代了OOP,所以POP具有比OOP更大的优势。 如今,在Swift中,我看到人们更喜欢将Struct与Protocol结合使用(通常在POP中使用),而不是使用Class(OOP)。 Class可以做的一切,Struct也可以,Struct基于Value Type而不是Class中的Reference Type→我们可以避免内存泄漏,隐式共享数据,死锁(多线程)等等。
不仅仅是POP和OOP,我们将举一个实际的例子。
我有一个叫做Bird的类,Bird具有2个属性:name和feather。
现在如何解决? 在OOP中:
- 分离到:鸟类和企鹅班→糟糕,不好的主意。
- 为Flyable创建协议说明→我们必须重新编写许多代码
- 更改为static func fly()→如果我们有10–100个子类?
3.欢迎使用POP:
我们可以重新设计我们的基本代码,从类更改为协议和结构以解决此问题。
您可以尝试添加新鸟,例如鸵鸟(不能飞行,但鸵鸟有羽毛),然后看看魔术。
结束语,我希望通过我的样本,对面向协议的编程有一个聪明的了解。 当然,POP只是一个概念,您可以根据自己的决定和问题来应用它,也可以根据需要决定是否应用它。 如果您想了解更多有关此主题的信息,则有一些很好的链接:
- 苹果官方链接
- POP是个美丽的故事
- 相反的想法
- 实际应用