成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析面向過程、面向對象和面向協議編程

開發 前端
本文簡單分析面向過程,面向對象,面向協議三種編程方式。前面兩種方式很多人都講過,這里不再重復講,更多地介紹面向協議編程。

?面向過程編程

面向過程編程是以過程為中心的編程方式。具體來說,一個系統或業務,從頭到尾按照步驟,用函數的形式來實現。

面向過程主要是分析出系統或業務所需要的步驟,關注的是處理好系統或業務的哪些步驟。

這種編程方式,典型的,也是最具代表性的就是C語言。

面向對象編程

面向過程編程是以對象為中心的編程方式。全稱Object Oriented Programming。簡稱OOP,其核心思想就是“萬事萬物皆為對象”,一切從對象的角度出發,設計和開發系統,用對象來管理系統。這種思維方式符合人的思維,很容易被人們所理解。

面向對象主要是把系統或業務拆解成各個對象;關注的是處理好系統或業務中哪些對象。

它起初的編程語言是Small talk(Small talk是所有OOP語言的鼻祖), 后來是著名的是C++語言,當然把OOP思想發揮到極致并讓大多數熟知的是Java語言。

面向協議編程

面向協議編程,全稱Protocol Oriented Programming,簡稱POP, 是 Apple 在 WWDC2015 上提出的一種編程范式,其已成為 Swift 的基礎庫。

在講面向協議之前,介紹下協議的概念。

關于協議的概念,在蘋果的官網是如下定義的:“協議定義了適合特定任務或功能的方法、屬性和其他需求的藍圖。然后,類、結構體或枚舉可以遵循該協議來提供這些需求的實際實現。任何滿足協議要求的類型都被稱為遵循該協議。”見 Swift 編程語言(Swift 4.0.3)部分。

這個比較難理解。我就結合個人經驗,從幾個方面理解下:

協議即Protocol,類似Java語言中Interface(接口),用于模塊間通訊。但是又不完全類似接口。

協議在Object-C中使用的比較多,一般是結合delegate(委托),實現一個VC對另一個VC傳遞數據或響應事件。在此場景中的協議很像接口,定義好的一個規范。

和繼承的關系,在Object-C和Swift語言中,我們知道是不支持多重繼承的,然而可以通過協議來實現多重繼承。

協議與多態,本來與多態扯不上關系,但是Swift4.0.3版本之后的協議擴展(Protocol extension)又可以實現多態功能。

總得來說,協議是綜合有接口、繼承,多態三個概念。如果一定給個概念的話,那協議更像定義了一套規范,讓類,結構體和枚舉遵循規范。

面向協議的編程又是怎么回事呢?

首先面向協議的開發語言,目前來說,就只有Swift這一門語言, Object-C和Java等其他語言都不不支持。

面向協議的編程,其實就是使用Swift語言進行開發。那協議的思想又如何在Swift上體現呢?

未使用協議思想的方式(即平常使用的方式):

我們首先創建一個ViewController并生成一個實例vc,這個vc最終也會AddSubView到父類上。然后在ViewCongroller上添加自己的視圖,如UIView,UILabel或UIButton等等操作。這些控件都會生成對應的對象。然后由這些對象來管理各個界面。

還有一種沒有界面,我們會先創建一個個的類。例如在學校管理系統中,建立Teacher、Student等類,然后在業務層創建Teacher,Student對應的實例。通過操作實例來實現業務邏輯。

總之,首先創建類,然后生成對應的實例,用實例管理業務。這個就是OOP的實現方式。

若采用協議思想來做的話,那首先不是建立一個個的類了,而是建立一整套協議(或者叫規范)。例如上例中的老師和學生,就有可能建立性別(Sex)、語言(language)、人(person)這些協議(規范)。在這些協議規范中定義屬性和方法。定義好之后,就可以針對原來的Teacher類按協議的多繼承來規范來。

例如定義一個Teacher類, 繼承Sex,language和person協議。這樣也可以實現Teacher類的功能。當然在實例化上Set有男女,language上有語文,數學,英語之類的,至于person就是個人的基本屬性(如姓名,地址,聯系方式)。這樣生成的Teacher實例,就可以搭配多種不同的Teacher實例。例如教英語的女老師,教體育的男老師。

從本質來說,定義一整套規范(協議),如Sex,language,person等等。這些規范可以是最小原子的,例如Sex,就一個屬性(sex,1表示男,0:表示女)。這一套通用的規范定義好之后,給類,結構體或枚舉 等類型去遵守。這就是完全不同之前的面向對象的方式。

它的好處:

1.協議可以任意擴展,不會影響現有系統。

2.協議可以復用。更好地利用現有的資源。


責任編輯:華軒 來源: 今日頭條
相關推薦

2013-07-30 09:42:41

實現編程接口編程對象編程

2010-07-13 17:18:29

Perl面向對象編程

2023-11-30 08:00:54

面向對象面向切面

2010-07-15 13:56:24

面向對象面向過程

2012-01-17 09:34:52

JavaScript

2017-04-21 09:07:39

JavaScript對象編程

2016-12-12 15:22:41

編程

2023-01-10 09:38:09

面向對象系統

2023-02-22 18:06:35

函數javascript面向對象編程

2010-07-08 13:35:39

UML面向對象

2009-10-13 11:28:39

VB.NET面向對象編

2012-12-13 11:01:42

IBMdW

2014-06-27 09:10:23

UDPTCP

2012-02-27 09:30:22

JavaScript

2010-11-17 11:31:22

Scala基礎面向對象Scala

2010-02-02 13:15:26

Python類

2015-03-20 09:54:44

網絡編程面向連接無連接

2022-04-01 10:27:04

面向對象串口協議代碼

2023-12-11 15:32:30

面向對象編程OOPpython

2019-03-26 10:50:22

Python面向對象編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 老司机久久 | 亚洲不卡av在线 | 天堂成人国产精品一区 | 亚洲性视频网站 | 亚洲大片 | 成人免费看黄 | 亚洲精品一区二区在线观看 | 乱码av午夜噜噜噜噜动漫 | 狠狠爱视频 | 欧美一区二区久久 | 久久99精品久久久水蜜桃 | 黄色一级片视频 | 成人亚洲一区 | 美女爽到呻吟久久久久 | 亚洲精品自在在线观看 | 国产性网 | www.伊人.com| 亚洲品质自拍视频网站 | 99国产视频 | 97偷拍视频 | 亚洲69p| 日本午夜在线视频 | 欧美精品久久久 | 久在草 | 欧美日韩在线电影 | 看av电影 | 超碰一区二区 | 女同av亚洲女人天堂 | 99在线免费观看视频 | 亚洲性视频网站 | 日韩精品一区二区三区视频播放 | 日韩伦理电影免费在线观看 | 色综合天天天天做夜夜夜夜做 | 久久久看 | 91视视频在线观看入口直接观看 | 亚洲一区二区免费 | 日韩欧美三区 | 伊人网伊人网 | 天天操人人干 | 午夜精品一区二区三区免费视频 | 国产激情99|