美文网首页
YTKNetwork中的命令模式

YTKNetwork中的命令模式

作者: kenny肉桂 | 来源:发表于2017-09-11 18:14 被阅读145次

YTKNetwork中的命令模式

今天开发中,遇到一个新框架 YTKNetwork .下午抽空,读了一下源码.比较感兴趣的就是作者提到的设计模式.特简单记录一下自己的理解.

对比传统方式

对于我来说,比较熟悉的方式是对AFNetworking进行一层封装.然后在block中,对返回数据进行派发.

YTKNework的方式,应用了命令模式.将请求的必要细节都封装到了一个请求对象中.

其实这本身就是命令模式的初衷,行为的请求者(发起网络请求的)往往会和行为的实现者(实现网络请求的,比如AFNetworking)耦合.由于这种耦合关系的存在,这个行为往往无法复用,撤销或者重做.

优点

因为封装成了对象,那么就可以使用集合对这些对象进行管理,也就是说,可以比较方便的进行排队,取消,调整优先级等操作.

命令模式UML

首先,一个GoF的命令模式的UML图如下.

15051227462886.jpg

角色职责

Client 创建ConcreteCommand对象并设定其receiver;
Invoker 要求通用命令(最终其实是到了ConcreteCommand) 实施请求
CommandInvoker依赖的接口
ConcreteCommand负责隔离Receiver和它的操作action.
Receiver是可以随着由Command(ConcreteCommand)对象实施相应请求,而执行实际操作的任何对象.

在YTKRequest中角色对应

Client : ViewController/ViewModel
Invoker: YKTNetworkAgent
Command: YTKBaseRequest
ConcreteCommand: CustomRequest
Receiver: AFNetworking

在角色中,Client需要知道Receiver并配置到ConcreteCommand中,所以才有了关系2(关联关系),而在YTKRequest中,这个Receiver是唯一的AFNetworking.所以将关系沉入到了框架内部.也就是我们的Client不需知道这个细节.所以2这个线,是不需要的.

整个流程就是:

1.在Client(ViewController或者ViewModel)中组装遵循Commnad(YTKBaseReuqest)协议(这里是继承)的ConcreteCommand(YTKBaseRequest的子类).
2.Invoker(YTKNetworkAgent)将Command加入队列,按需调用Command(YTKBaseReuqest),找到ConcreteCommand(YTKBaseRequest的子类)
3.ConcreteCommand调用找到Recevier(AFNetworking)执行action(网络请求)
4.按需进行回调

相关文章

  • YTKNetwork中的命令模式

    YTKNetwork中的命令模式 今天开发中,遇到一个新框架 YTKNetwork .下午抽空,读了一下源码.比...

  • JavaScript设计模式七(命令模式)

    JavaScript设计模式七(命令模式) 定义: 命令模式是最简单和优雅的模式之一,命令模式中的命令指的是一个执...

  • 命令模式

    摘自《JavaScript设计模式与开发实践》 命令模式是最简单和优雅的模式之一,命令模式中的命令(command...

  • YTKNetwork

    YTKNetwork集成教程以及相关问题思考 源码解析之--YTKNetwork网络层 YTKNetwork源码解...

  • Junit中的命令模式

    Junit中的命令模式 目录 命令模式介绍 Junit中的使用 命令模式介绍 问题:有一个附着多组开关按钮的遥控器...

  • 设计模式-命令模式

    命令模式是最简单和优雅的模式之一,命令模式中的命令是指执行某些特定操作的指令。命令模式最常见的使用场景是不知道命令...

  • YTKNetwork 基本用法

    YTKNetwork Basic Guide:YTKNetwork 基本指导 In the article, we...

  • 学习 | Jupyter快捷键使用快捷键

    Jupyter中的两种模式 命令模式在编辑模式下按【Esc】键进入命令模式,下面所有快捷键都是在命令模式下使用的。...

  • VIM快捷键

    VIM快捷键 VIM四种模式 命令模式: 键入的内容被当做命令 插入模式: 键入的命令插入文件中 可视模式: 可通...

  • 常用vim命令

    vim存在3中模式,分别是命令模式、输入模式和编辑模式。 光标跳转 命令模式 编辑模式 复制粘贴 撤销

网友评论

      本文标题:YTKNetwork中的命令模式

      本文链接:https://www.haomeiwen.com/subject/mqbfsxtx.html