swift 新特性 -面向对象

本文分享了一位开发者从面向对象编程(OOP)转向Swift面向协议编程(POP)的心路历程及实践经验。通过对比两种编程范式的优缺点,作者强调了POP在减少代码耦合、提高代码复用性方面的优势。

因为对swift的认识还不够深入,公司需要换到swift编程,只是看了几个swift写的别人的工程,自我感觉良好.再见

在项目启动时,也是为了赶进度就按照以前OC的做法(面向对象编程),只是觉得只是语法不同而已,不过尔尔.

逐渐在项目中搭建起各种MVC,各种继承,KVO

在项目日益壮大到两三个星期的时候发现,已经把自己前面的代码忘了差不多,每次为了修改一个实现方法,必须把整个类重新认识一遍,这里花费的时间太多太多.对于快速迭代来说,可不funny.

但是听很多前辈说swift更加简洁,方法,很swift,我是没有一点感觉,所以开始在网上搜索关于swift的资料,希望改变现在的困境.

后来慢慢了解到swift跟以前OC最大的差异就在于swift是<面向协议编程>简称:POP,而OC则是<面向对象编程>简称:OOP

下面是我对POP的简单理解,日后有更深的理解会回来补全:

首先看看swift中,苹果做了哪些努力,作为swift面向协议的主力,系统提供的协议就有55种,如图:

在码农日常中,必须记住的是,"组合优于继承".意思就是多把具体的功能拆分,方便以后复用,继承虽好不能贪杯,当多于三个类继承一个父类,就要考虑重构他.

当然POP正好解决这种耦合,先了解POP怎么使用:


在swift中协议被赋予更强大的能力,可让值传递类型继承(特指:结构体,枚举)

例子:

struct person : ExpressibleByArrayLiteral {
    var name = ""
    var id = ""
    typealias Element = String
    init(arrayLiteral elements: Element...) {
        if elements.count == 2{
            name = elements[0]
            id = elements[1]
        }
    }
}

//自定义 结构体比较符号
func == (p1: person,p2: person) -> Bool{
    return p1.id == p2.id
}

let p1:person = ["Bruce","10"]
print(p1)

let p2:person = ["Bruce","10"]
print(p2)

print(p1 == p2)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值