什么是面向协议的编程?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1、implicit data sharing

2、Inheritance issues

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

3、Lost Type Relationship

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

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

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

待写

最新文章

  1. C++函数指针总结
  2. 如何持续集成/交付一个开源.NET函数库到Nuget.org
  3. Codevs 3728 联合权值
  4. CentOS 程序开机自启动方法总结
  5. 11个强大的Visual Studio调试小技巧
  6. AjaxFormSubmit使用demo
  7. 大熊君说说JS与设计模式之------命令模式Command
  8. iOS深入学习(UITableView系列2:reloadData)
  9. 使用cnblogs.com的用户体验和提出来的建议
  10. linux 学习之九、Linux 磁盘与文件系统管理(1)
  11. php 二级级联菜单
  12. 排序算法 - 选择排序(selection sort)
  13. echarts柱状图修改背景线为网格线、去掉刻度标签、鼠标悬停在柱条上时变色、柱条圆角弧度、
  14. 【java线程池】
  15. 将选中项的value值赋给select的title
  16. tensorflow使用pb文件进行模型预测
  17. python3.4学习笔记(七) 学习网站博客推荐
  18. Python学习-14.Python的输入输出(三)
  19. Java自学-初识
  20. [Python爬虫] 之十三:Selenium +phantomjs抓取活动树会议活动数据

热门文章

  1. 对于HttpContext.Current的一点理解
  2. jQuery中事件冒泡问题及处理
  3. linux 配置 sphinx 全文搜索引擎
  4. MongoDB-性能优化之索引
  5. c++内存管理错误记录
  6. Razor 语法
  7. Linux的时钟管理
  8. fpdf使用標楷體
  9. 极简易版专家聊天程序--JAVA练手
  10. mysql中lock tables与unlock tables