zoukankan      html  css  js  c++  java
  • 第2月第1天 命令(Command)模式

    http://www.tracefact.net/Design-Pattern/Command.aspx

    命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

    《被误解的MVC和被神化的MVVM》

    将网络请求抽象到单独的类中

    新手写代码,直接就在 Controller 里面用 AFNetworking 发一个请求,请求的完数据直接就传递给 View。入门一些的同学,知道把这些请求代码移到另外一个静态类里面。但是我觉得还不够,所以我建议将每一个网络请求直接封装成类。

    把每一个网络请求封装成对象其实是使用了设计模式中的 Command 模式,它有以下好处:

    • 将网络请求与具体的第三方库依赖隔离,方便以后更换底层的网络库。实际上我们公司的 iOS 客户端最初是基于 ASIHttpRequest 的,我们只花了两天,就很轻松地切换到了 AFNetworking
    • 方便在基类中处理公共逻辑,例如猿题库的数据版本号信息就统一在基类中处理。
    • 方便在基类中处理缓存逻辑,以及其它一些公共逻辑。
    • 方便做对象的持久化。

    大家如果感兴趣,可以看我们公司开源的 iOS 网络库:YTKNetwork。它在这种思考的指导下,不但将 Controller 中的代码瘦身,而且进一步演化和加强,现在它还支持诸如复杂网络请求管理,断点续传,插件机制,JSON 合法性检查等功能。

    这部分代码从 Controller 中剥离出来后,不但简化了 Controller 中的逻辑,也达到了网络层的代码复用的效果。

     

     

  • 相关阅读:
    XSS
    XSS
    检查空引用
    LockInt
    Unity Shaderlab: Object Outlines 转
    git 恢复单个文件的历史版本
    烽火HG220G-U E00L2.03M2000光猫改桥接教程
    mark mem
    转 class和struct最本质的区别
    unity shader base pass and additional pass
  • 原文地址:https://www.cnblogs.com/javastart/p/6019183.html
Copyright © 2011-2022 走看看