【M】DataModel
服务端数据或本地数据对应的实体类
【M】Service(这里也可以先抽象出ServiceProtocol然后Service继承ServiceProtocol实现其抽象方法,则Presenter持有的是ServiceProtocol实例)
请求本地或服务端数据
【M】ServiceListener
针对Service请求的回调监听,监听也是Protocol,需要在Presenter中实现(当然也可以直接使用“闭包”处理回调操作)
【V】ViewProtocol
抽象View具有的行为操作
{对于View的接口,去观察功能上的操作,然后考虑:
- 该操作需要什么?(getUserName, getPassword)
- 该操作的结果,对应的反馈?(toMainActivity, showFailedError)
- 该操作过程中对应的友好的交互?(showLoading, hideLoading)
}
【V】ViewController
1、遵守协议ViewProtocol,并实现其抽象方法
2、持有Presenter实例
3、调用Presenter绑定Service实例的方法
4、调用Presenter绑定ViewProtocol实例的方法(此时ViewController即是ViewProtocol,因为“ViewController遵守协议ViewProtocol,并实现其抽象方法”)
5、调用Presenter实例处理业务的方法
【P】Presenter
1、持有Service和ViewProtocol实例(需要公开绑定Service实例和 绑定ViewProtocol实例的方法)
2、通过利用Service实例获取到数据,再利用ViewProtocol实例调用其抽象方法处理数据(这里即是“Presenter处理业务的方法”)
3、实现ServiceListener
实例项目
https://github.com/1987151729/k_english_ios