iOS知识点总结(5)- 设计一个App

首先,App搭建要遵循的架构原则:易读性、易维护性、易扩展性。其次 根据产品需求和设计图,脑中先建立一个产品架构,

不同类型的产品,技术选型也有所不同,通常我会选择一些当下比较热门、好用的第三方框架。例如:YYKit 

常见的分层架构:视图层、业务层、网络层、数据层。

好架构的前提:

有严格的代码规范,结构目录清晰,功能模块分类明确

注释统一明确,有一致规范

避免复杂的依赖关系,确保代码的高封装性和高复用性,减少冗余代码

没有横向依赖,尽可能少的跨层访问

对业务方该限制的地方有限制,该灵活的地方要给业务方创造灵活实现的条件

易测试,易拓展

接口少,接口参数少

低内存,高性能

提高模块化程度,增加组件粒度

项目目录结构:

1.应用入口(APPDelegate)

AppDelegate是应用的代理,应用级的事件都委托它处理,包含启动退出、推送等事件,以及IM、支付等第三方的回调,这使得AppDelegate内代码庞大,错综复杂,十分不利于阅读和维护,因此可以新增了一个AppDelegate+AppService类别,用来处理生命周期之外的业务,AppDelegate作为事件入口,具体实现直接调用类别里的方法,只为更清晰。

2.功能模块(Modules) 遵循高内聚 低耦合的思想

Modules包含了应用内的功能模块 ,每个模块内使用的是MVC模式,一般包含Model、View、Controller这三个文件夹,根据需求或者业务逻辑的复杂度改为MVVM模式 感觉这个不是一成不变的

3.管理模块(Manager)

Manager的定义是全局基础服务,通常使用类方法或者单例来实现,主要包含对应用、用户的管理和服务,例如网络状态监听,广告页应用介绍页等;用户快速登录退出操作以及登录状态的获取等。

4.工具类(Utilities)

Utils文件夹内主要包含全局通用工具,来源于对三方框架的二次封装,或是自己写的工具类。

5.基类(Base)

Base文件夹用来存放项目的基类,基类作用包含一些定制化的内容,例如页面样式,空数据页面等,使用基类来实现,可以统一控制,利于维护,减少冗余。

6.分类(Category)

对系统类、自定义类增加的类别都放在这里。

7.宏定义、头文件(Define)

全局宏顾名思义是定义了一些全局通用宏、枚举。

一般是这几种:工具宏定义(UtilsMacros):比如获取屏幕宽高,系统版本,颜色赋值,数据类型验证等;

接口宏定义(URLMacros):定义服务器接口地址以及环境开关;

枚举(Enumerate):全局的枚举

8.资源文件(Resource)

主要是各种文件,json、xml、dat、图片等。

9.第三方库(ThridParty)

第三方文件夹放一些第三方的类库和对第三方封装,比如第三方登录、支付、IM等。

10.Pods(管理第三方库)

包管理工具,方便我们更新管理第三方库

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,795评论 1 32
  • (平水韵,仄起入韵) 叶面冰晶白露凝,潸痕遍布郁筠藤。 寒衣不觉轻如梦,丝缕闲愁鬓发承。 海之兰老师原玉: 夜起苍...
    云横秦岭a681阅读 3,576评论 11 18
  • ctrl+c是终止当前在终端窗口中运行的命令或脚本, kill -9 pid,是不顾后果的强制终止(如果的你的速度...
    F的平方阅读 11,631评论 0 0
  • 【思维导图实战派】刻意练习之“遇见……”百副计划:2/100 这是昨天下午所画,因儿子被批事件,引发我内在强烈情绪...
    思维导图实战派一虹阅读 1,222评论 0 0
  • 妈妈是重庆人,时隔一年我们又回到她的家乡。外婆开心得不说话也是笑着的,转身进厨房忙活起来,一会儿工夫就端出好几个麻...
    莫知西东阅读 4,298评论 8 7