swift 新特性 -面向对象
2017-03-13 22:09
162 查看
因为对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)
在项目启动时,也是为了赶进度就按照以前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)
相关文章推荐
- [Swift]9.0swift语言中的面向对象特性
- Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结
- Javascript面向对象的多态特性
- 黑马程序员———面向对象的特性之继承
- prototype.js 让你更深入的了解javascript的面向对象特性
- Swift 笔记 七:swift函数的高级特性
- PHP面向对象三大特性之一:封装
- I学霸官方免费教程十五:Java面向对象三大特性之多态
- prototype.js 深入学习 javascript 的面向对象特性
- 小糖出品:面向对象三大特性之封装
- 面向对象三大特性:封装,继承,多态(三、多态的进一步讲解)
- java 面向对象三大特性(封装,继承,多态)以及抽象、接口的介绍
- 了解面向对象的三大特性
- 阿里面经之解答by cmershen(1)——Java的基本特性,面向对象的六大特征等
- 最全的 Swift 4 新特性解析
- C#面向对象的编程语言具三个特性
- C++面向对象的基本特性
- python 3全栈开发-面向对象之绑定方法(classmethod与staticmethod的区别)、多态、封装的特性property
- java:面向对象的三大特性之一:继承
- java面向对象的三大特性