关于IOP的思考
2019-03-19 本文已影响0人
Gemini_Leon
IOP即面向接口编程,这在java语言中老生常谈的东西,在iOS中其实并不常用,iOS其实就是面向协议编程,即@protocol,我们的代理传值就是基于它来实现的.
接下来是我对IOP的一些简单思考,并用demo去实现,我们用一个 "工厂" 生产 "产品" 逻辑去分析
首先我们定义一个工厂协议FactoryProtocol

凡是接受此协议的类必须要实现这个方法,而这个方法是返回一个实现产品接口的对象.
我们定义了2个工厂类来实现此协议

让我们来看一下产品定义的协议,凡是产品类需要实现此协议,来使用协议里面的方法

我们让ProductA和ProductB遵循此协议,并实现协议方法,来方便我们调用
最后我们需要一个工具类来管理工厂类


接下来,我们要创建产品类,使用他的方法的话,就可以这样写了

最后附上我的demo地址,欢迎大家讨论
https://github.com/GeminiGuoGuo/iOS_IOP