swift中面向协议的编程

PI_WF PI_WF     2022-08-01     371

关键词:

 

 

什么是面向协议的编程?

面向协议的编程,是一种编程范式。

编程范式,是一个计算机科学用语。维基百科中的解释是,计算机编程的基本风格或典型模式。通俗来说,就是解决某一个问题的方法不同方法和思路。

像大家很熟悉的,面向对象编程以及面向过程编程,都是一种编程范式。

面向过程编程,关心的焦点是解决某一个问题需要多少步。而面向对象的编程关心的是解决问题需要多少个对象,以及这些对象之间的组织联系。

 

解释完了编程范式这个名字含义之后,我们继续回到正题上来。

 

既然面向协议编程,与面向对象,面向过程一样,是一种编程范式。那么这种编程范式相对其他其他两种范式有什么优点和优势呢。

在回答这个问题之前,我们先来回顾一下面向对象。

大家知道面向对象,相对面向过程已经是一种进步,能够让一个复杂的的工程划分为若干个小的独立的模块,减少了软件的复杂度。

这主要得益于面向对象编程里的几个核心概念,封装,继承,多态。

 

在面向对象的编程世界中,对象是构建程序的基本单元,

封装提供代码一个安全和便捷的访问机制

继承让子类很容易复用父类的代码

多态是对象具有更多抽象能力,写出更加通用的代码。

 

但是大家你在使用它们的时候,也是有成本的。主要有三个

1、implicit data sharing 

 

2、Inheritance issues

每当你创建一个对象的时候,你第一件事就是得考虑它集成谁。并且呢,集成一般是单继承,只能有一个父类,不能有多个。而且,如果在开发中期你想改变自己的父类是一个非常难得事情。还有,父类的所有属性和方法,你都必须得都集成过来,不管你想要还是不想要,没有任何商量的余地。

3、Lost Type Relationship

虽然多态让对象具有更多抽象能力,但是我们必须得写很多类型转换代码。例如,一些基类在调用某些方法的时候,基类没有实现,子类实现了。这个时候你必须将基类转化成子类才能够调用,这造成了类型的缺失。

 

面向协议这个概念的提出,就是为了解决以上面向对象所遇到的问题。

我们以一个具体的例子来看一看面向协议编程是如何写的。

待写

 

WWDC Swift 会话中面向协议的编程

】WWDCSwift会话中面向协议的编程【英文标题】:WWDCProtocol-OrientedProgramminginSwiftsession【发布时间】:2015-12-0417:26:32【问题描述】:Apple的2015年WWDC面向协议的Swift会议中的这行代码有什么作用?vardraw:(CGContext)->()=_in()可以在此处找... 查看详情

swift iOS中的面向协议编程

】swiftiOS中的面向协议编程【英文标题】:ProtocolOrientedProgramminginswiftiOS【发布时间】:2020-06-2905:36:49【问题描述】:这里是Protocols:protocolWireFrameProtocol//routerforallnormalcases//likeshowingloginpageprotocolInteractorProtocolvarwireFrame:Wir 查看详情

什么是 Swift 中的面向协议编程?它带来了什么附加价值?

】什么是Swift中的面向协议编程?它带来了什么附加价值?【英文标题】:WhatisProtocolOrientedProgramminginSwift?Whataddedvaluedoesitbring?【发布时间】:2016-09-2813:26:12【问题描述】:来自Apple自己的网站:“Swift设计的核心是两个非常强大... 查看详情

什么是 Swift 中的面向协议编程?它带来了什么附加价值?

】什么是Swift中的面向协议编程?它带来了什么附加价值?【英文标题】:WhatisProtocolOrientedProgramminginSwift?Whataddedvaluedoesitbring?【发布时间】:2016-05-3016:40:20【问题描述】:来自Apple自己的网站:“Swift设计的核心是两个非常强大... 查看详情

Swift 面向协议的编程一种协议继承其他协议,其中一种实现方法

】Swift面向协议的编程一种协议继承其他协议,其中一种实现方法【英文标题】:Swiftprotocolorientedprogrammingoneprotocolinheritothersandoneofthemimplementmethod【发布时间】:2020-07-0914:05:45【问题描述】:我有这样的协议publicprotocolIRouter:Request... 查看详情

swift3面向协议编程

...从我们经常遇到的简单实例入手,为您展示最简单的面向协议编程入门:首先我们是不是经常遇到下面的代码:注册celltableview.register(UINib(nibName:"XXCell",bundle:Bundle.main),forCellReuseIdentifier:"XXCellIdentifier")从可 查看详情

swift-pop(面向协议编程)与oop(代码片段)

面向协议编程(ProtocolOrientedProgramming,简称POP),是Swift的一种编程范式,Apple于2015年WWDC提出的,如果大家看Swift的标准库,就会看到大量POP的影子。同时Swift也是一门面向对象的编程语言(ObjectOrientedProgramming,简称OOP),在Swif... 查看详情

面向协议的编程和委托模式

】面向协议的编程和委托模式【英文标题】:ProtocolOrientedProgrammingandtheDelegatePattern【发布时间】:2015-12-0204:48:14【问题描述】:WWDC2015sessionvideo描述了面向协议编程的思想,我想在我未来的应用程序中采用这种技术。过去几天我... 查看详情

为什么swift是面向协议的编程--对面向对象机制的改进

主要目标是提供抽象能力和解决值类型的多态问题 Actually,Abrahamssays,thoseareallattributesoftypes,andclassesarejustonewayofimplementingatype.Yet,theyexactaheavytollonprogrammersinthattheymaycause:Implicitsharing,suchthatiftwoobjectsreferathirdobject,thenbothcanmodifyitwithou... 查看详情

用swift编写面向协议的视图

我最近做了个Swift 面向协议编程实践 (POP:boom:)的演讲。视频还在处理中。另一方面,这是演讲中POP视图部分的文本记录,供我和其他任何人作参考! 简单的任务假设你要写一个由一张图片和一个按钮构成的简单应... 查看详情

swift系列三十三-面向协议编程(代码片段)

面向协议编程(ProtocolOrientedProgramming,简称POP)是Swift的一种编程范式,Apple于2015年WWDC提出。在Swift的标准库中,能见到大量POP的影子。一、POP和OOP1.1.回顾OOPSwift也是一门面向对象的编程语言(ObjectOrientedPr... 查看详情

swift2编程之道:pop+mvvm

...l)出发,经过几个月的学习探索,博主发现Swift作为一门面向协议编程(POP)的语言非常适合时下火热的MVVM架构。MVVM已经提出有一段时间了,如果你还不懂什么是MVVM,建议先去补充相关的知识,再回到本文中。在CocoaTouch体系... 查看详情

swiftswift中面向协议的编程(代码片段)

查看详情

swift如何兼顾协议中默认和自定义方法的调用?(代码片段)

...Swift中最重要的概念之一当属协议无疑。有人说Swift不是面向对象,而是面向协议的语言,我表示赞同!在Swift中我们应该首先尝试值(Value)和协议(Protocol)的组合而不是引用和类继承的组合。协议除了接口中必须遵守的方法,我... 查看详情

协议方法是不是意味着在 Swift 中被覆盖?

...05-2012:44:40【问题描述】:我已经开始阅读一本关于Swift中面向协议编程的教科书。当我在操场上写代码时,我注意到书中的一种方法使用了关键字“静态”。据我了解,静态方法意味着该方法将由类型本身调用,而不是由该类型... 查看详情

将对象保存到确认协议的 UserDefaults(使用面向协议的编程范例)

】将对象保存到确认协议的UserDefaults(使用面向协议的编程范例)【英文标题】:SavingobjectstoUserDefaultsthatconfirmtoaprotocol(usingprotocolorientedprogrammingparadigm)【发布时间】:2018-03-1505:25:16【问题描述】:我有多个要保存到UserDefaults的... 查看详情

swift面向协议なrxswift化したuialertcontroller(代码片段)

查看详情

8函数相关内容

...结8函数函数用来表示一块具有独立功能的代码,函数在面向过程的编程语言中被独立使用,在面向对象的编程语言中被封装到了类或者接口(协议)中,通过类的对象来使用。在现代编程语言中它的功能没有变化,除了可以通过类... 查看详情