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是个美丽的故事
  • 相反的想法
  • 实际应用