• Swift中面向协议的编程


    什么是面向协议的编程?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    1、implicit data sharing 

     

    2、Inheritance issues

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

    3、Lost Type Relationship

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

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

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

    待写

  • 相关阅读:
    通用权限管理设计 之 数据库结构设计
    jQuery LigerUI 插件介绍及使用之ligerDateEditor
    jQuery LigerUI 插件介绍及使用之ligerTree
    jQuery LigerUI V1.01(包括API和全部源码) 发布
    jQuery liger ui ligerGrid 打造通用的分页排序查询表格(提供下载)
    jQuery LigerUI V1.1.5 (包括API和全部源码) 发布
    jQuery LigerUI 使用教程表格篇(1)
    jQuery LigerUI V1.0(包括API和全部源码) 发布
    jQuery LigerUI V1.1.0 (包括API和全部源码) 发布
    nginx keepalived
  • 原文地址:https://www.cnblogs.com/gatsbywang/p/5816472.html
Copyright © 2020-2023  润新知