iOS软件开发架构理解

这个东西是硬伤,框架?自带的mvc? 自带的UIViewController UIView UINavigationController 这些算不算?当然算的,cocoa框架嘛,大家都知道。

其实,我想分享的是:整个软件设计的代码结构管理。在阅读了不少源码后,总结出来的好的设计代码结构分布逻辑。

一开始,我们学会了简单的使用UIButton,UIImage等这些常用的视图类的时候,我们其实已经能够写出来一般的软件了。常见的功能,这里添加一点,那里添加一点,这里一个网络请求,这里一个bool类型判断,例如常见的:isDownding? reLoading?

这些,我们经常在ViewController中就直接写了,于是,飞快的打出来:@property(nonatomic, assign)BOOL reLoading; 然后代码中,多处引用的地方进行处理。

而如果加上一个网络请求,数据柔和,加上几个成员变量,NSArray, NSDictionary, 什么的,再接着,多上几个又臭又长的正则匹配什么的。可以想象,这个ViewController已经非常长了。上图演示:

好了,我们开始来改进代码了,第一步,把基本的view独立出来一个view文件的存放,分离出来。这样子至少省了3分之一的代码,再viewController中,而且极大的提高了代码阅读效率。直接看viewController就能看完整体逻辑。而可以先不管具体实现。

然后接着,我们又觉得还是不够,不够精简。对。于是,我们把数据独立出来。对抽象独立出来。建立专门的对象存储数据对象。可以发现,无一例外的,所有的大型软件都会这么做。也可以省了好多代码,提高阅读代码体验,极大的解耦了代码。这两种方法相当的基础,基本上做完了。至少代码可阅读了。入门了。现在的文件结构是这样的:

好看了好多。

好了,我们已经基本排版好了文件结构以及基本的代码分布问题。但是,这只是入门了而已。

下面的就是基于软件的复杂度需求进行变更的:

1.抽离出来网络请求的部分:

  原因如下:a.网络请求,总会有错误返回码,能方便的增删查减,代码更容易找。

       b.网络请求,虽然自带的网络请求也是可以一句话,BLock返回处理结果,但是,要基于自己的业务逻辑进行封装,一定程度上减少藕合度,提高复用性。

       c.对于特俗的网络请求,例如http的post请求,就需要自己独立进行封装数据格式了。

2.基于数据的复杂度,进行相应处理,可以添加自己的业务逻辑的数据库处理操作。可以添加各种自定义类型的数据类。这样做的好处,也是抽离代码,减少耦合。

最后上传一张前人总结的,仅供参考的图片:

这里的分类方式真的只能仅供参考,具体情况还要基于实际项目的分析,不能一概而论的。

That's all。

posted on 2015-02-13 23:57 yanshanLove 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/Lxiaolong/p/4289562.html

iOS软件开发架构理解相关推荐

  1. 软件开发架构模式浅谈:一些思考和实践记录

    一 背景和问题 我个人平时会比较慎用"架构"这个词 一方面是觉得业界有很多架构大师和架构模式,而我的认知和实践有限: 另一方面是因为这个词看着挺高大上.有点务虚,如果不结合实际场景 ...

  2. 浅谈软件开发架构模式

    本文作者将介绍他对于软件开发架构模式的一些思考和实践. 背景和问题 我个人平时会比较慎用"架构"这个词 一方面是觉得业界有很多架构大师和架构模式,而我的认知和实践有限: 另一方面是 ...

  3. 软件开发架构师的职责

    我在Motorola的网络部(注:今年4月份该部门被Nokia Siemens Networks收购,所以我现在是NSN的员工)担任架构师(Software Architect)一职至今近两年了,最近 ...

  4. 中国国内ios软件开发前景到底是怎样的呢

    由于iPhone.iPad的在世界流行,与其产品搭配的iOS系统也成了开发者的热门.iOS是苹果的一个操作系统,它管理设备硬件并为手机本地应用程序的实现提供基础技术.根据设备不同,操作系统具有不同的系 ...

  5. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    阅读目录 一.网络编程 一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想 ...

  6. 软件开发架构的演变过程

    软件开发架构的演变过程 单体架构 >分布式架构 >SOA架构 >微服务架构 1.单体架构 就是把所有的功能模块打到一个包里面然后再部署,采用了单体架构的项目被称之为单体应用. 优点: ...

  7. 物联网大数据平台软件开发架构案例解析

    物联网大数据平台软件开发架构案例解析 有人说物联网是引领信息技术的第三次浪潮. 第一次浪潮是个人电脑的出现,开创了信息时代的第一次革命,此次浪潮成就了微软.IBM等巨头. 第二次浪潮是以信息传输为特征 ...

  8. 并发编程知识总结,软件开发架构,socket套接字模板,粘包问题,struct解决粘包问题,上传大文件数据,socketserver,关于操作系统的发展史,进程,线程。...

    并发编程知识总结 软件开发架构 C/S: client:客户端 server:服务端 优点:占用网络资源少,软件的使用稳定 缺点:服务端更新后,客户端也要更新,需要使用多个软件,需要下载多个客户端 B ...

  9. 电子烟的软件开发架构及欧美测试标准+中国标准+多国标准

    电子烟的软件开发架构及欧美测试标准+中国标准+多国标准 1. 什么是电子烟 2. 电子烟软件架构 2.1. 平台 2.2. 模块划分 2.3. 模块内设计框架 3. 为什么需要制定电子烟标准 4. 电 ...

最新文章

  1. HDU1201 18岁生日【日期计算】
  2. PAT甲级1074 Reversing Linked List :[C++题解]反转链表,借用vector
  3. K8s 学习者绝对不能错过的最全知识图谱(内含 58个知识点链接)
  4. lib60870-IEC 60870-5-101 / 104 协议对总查询的处理
  5. 使用Flex4画图形
  6. 从零基础入门Tensorflow2.0 ----四、12. tf_data基础api使用
  7. APUE学习笔记-15章进程间通信
  8. 时序分析(3) -- 自回归模型(AR)
  9. Pytorch transform
  10. Linux笔记------关闭系统漏洞补丁(spectre meltdown补丁)
  11. 开源物业管理系统的对比
  12. 【fpdlink】FPDlink接口---TI954解串器功能分析
  13. 解决vue google无状态播放音频文件
  14. day20.顺序结构 选择结构
  15. 黑马程序员武汉中心——程序员面试套路集
  16. 频谱、频谱密度、功率谱密度、能量谱密度
  17. bug管理工具bugfree配置之一:php mysql apache 配置篇
  18. 有源医疗器械的开发过程和各阶段的注意事项(九)——————设计验证阶段
  19. delphi 7常用快捷键总结
  20. qt QTabWidget setTabsClosable

热门文章

  1. C#方法参数传递机制
  2. 打包签名时出现Conversion to Dalvik format failed with error 1
  3. 蜗牛学习正则表达式 教程 工具一网打尽
  4. 入侵检测规则匹配算法--单模匹配算法、多模匹配算法、hyperscan
  5. 基于FPGA实现IIC接口(EEPROM)
  6. (50)Xilinx Multiplier IP核配置(十一)(第10天)
  7. (21)FPGA面试技能提升篇(JESD204B接口)
  8. qt与JAVA服务器通信_Qt实现的SSL通信客户端和服务器
  9. rfid技术及应用答案王佳斌_详解工业数据采集中RFID技术的应用
  10. MQTT基础:本地网页控制LED灯(SIOT+MQTT+掌控板)