Swift面向协议的强大之处,相对于OC的面向对象的解耦

感触之言

相信大家对于OC的面向对象的开发都已经了然于胸,不必多说.在Swift中的面向协议开发,进一步使代码块之间的耦合性更低,针对于不同的需要,你可以选择性的选择继承或者extension来选择为某一个类新增方法

正文

假设我现在有一个枚举值


Swift面向协议的强大之处,相对于OC的面向对象的解耦_第1张图片
登录的返回状态的枚举值

我下面为这个枚举值添加的二个属性值


Swift面向协议的强大之处,相对于OC的面向对象的解耦_第2张图片
获取枚举属性传入的字符串的值


Swift面向协议的强大之处,相对于OC的面向对象的解耦_第3张图片
为枚举值创建了一个颜色的属性

接下来我使用RXSwift进行实现的,我在控制器初始化了二个控件


Swift面向协议的强大之处,相对于OC的面向对象的解耦_第4张图片
一个是ViewModel,一个是RXSwift用到的属性

导入RXswift的podfile中的文件

pod 'RxSwift'

pod 'RxCocoa'

pod 'RxDataSources'

Swift面向协议的强大之处,相对于OC的面向对象的解耦_第5张图片
podfile中导入的第三方库

紧接着需要在viewModel定义属性来监听,同时获取输入的值


Swift面向协议的强大之处,相对于OC的面向对象的解耦_第6张图片
一个变量,一个监听者

LoginResult上面已经讲过了,是一个枚举值,增加了二个属性值

在viewModel中的监听者需要初始化


Swift面向协议的强大之处,相对于OC的面向对象的解耦_第7张图片
根据text的长度来返回不同值


上面全部完成以后,接下来最重要的工作是在控制器绑定和监听属性值并赋值


Swift面向协议的强大之处,相对于OC的面向对象的解耦_第8张图片
绑定viewModel中的变量,另一个是监听信号,并赋值


效果图如下(不能上传短视频,只能上传一张图了)


Swift面向协议的强大之处,相对于OC的面向对象的解耦_第9张图片
效果图


具体代码地址:代码

如有错误和需要改正的地方,请指出评论,谢谢各位看官

你可能感兴趣的:(Swift面向协议的强大之处,相对于OC的面向对象的解耦)