博客> iOS 基于MVC设计模式的基类设计
iOS 基于MVC设计模式的基类设计
2018-10-23 15:03 评论:0 阅读:301 iOS雯Ping
iOS开发 移动开发 程序员 iOS程序员

前言

最近有很多小伙伴,看了笔者这篇iOS 基于MVVM + RAC + ViewModel-Based Navigation的微信开发(一)

https://www.jianshu.com/p/fd407a4ecb8e文章后反馈给笔者很多优质性的建议和意见,当然这跟当年笔者写这篇文章的初衷如出一辙,其根本目的就是拿出来和大家交流分享以及学习知道,希望可以抛砖引玉,取长补短,共同进步。再此,非常感谢大家的积极反馈和批评指导,给了笔者继续写文章的动力

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:687528266,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

iOS 基于MVVM + RAC + ViewModel-Based Navigation的微信开发(一)

https://www.jianshu.com/p/fd407a4ecb8e这篇文章主要讲的是基于MVVM设计模式的基类设计,通过基类提供的API和属性来解决当前产品开发中一些常用的**业务逻辑**和**场景切换**,以及**快速搭建出项目的基本骨架**...等等。但是对于刚初学MVVM设计模式的开发者并不是很友好,可能会导致看完文章一脸懵逼的下场,然后看完后又不能将其运用到实际项目中去,当然会觉得大失所望呀。当然,这里笔者建议初学者,可以先看看笔者之前写的有关于MVVM设计模式学习的文章,循序渐进,方得始终,有了一定的基础再来阅读和学习这篇文章

当然,也有很多重度使用基于MVC设计模式开发的以及初学iOS的小伙伴私信笔者,希望我写一篇关于基于MVC设计模式的常用基(套)类(路)设计,笔者深感鸭梨山大,并在业余时间写了一套笔者开发中常用的基于MVC设计模式的基类设计套路,才有了本篇文章的诞生。当然还是建议头铁的小伙伴先去看看iOS 基于MVVM + RAC + ViewModel-Based Navigation的微信开发(一)

https://www.jianshu.com/p/fd407a4ecb8e这篇文章,其BaseClass的设计说明笔者写的更加详细,如此一来,大家了解了使用场景后,再反过头来在看本篇文章,你就会觉得So Easy~。最后希望大家看了以后有所收获,学以致用。文章仅供大家参考,若有不妥之处,还望不吝赐教,欢迎批评指正。

概述

  • 这里笔者还是以微信为例,利用笔者常用的基于MVC设计模式的开发套路开发出微信的基本骨架。当然这里需要特别申明:以下内容都是笔者在日常开发中比较常用的基于MVC设计模式的开发套路,希望大家借鉴学习,也欢迎大家说说自己的基于MVC设计模式的开发套路,也让笔者借鉴学习学习。

  • 本篇文章内容主要侧重基类的设计和使用,当然笔者会详细的介绍各个基类的头文件暴露出来的属性和API的使用以及具体的使用场景。首先,基类的出现是为了聚合大量共有的常用业务逻辑,这样能极大程度的减少开发者冗余代码的产生,且让开发者更加专注于自身模块的开发。其次,基类提供API让其子类去重写,这样一定程度上保证了开发规范,让各个开发者写出易读、易懂的代码。

  • 此次,笔者设计的基类依然采用的是继承的方式来开发微信的基本骨架,当然,很多小伙伴会问,为何不用协议的方式?笔者个人认为,协议过于分散,而继承则比较单一。萝卜白菜,各有所爱,大家完全可以参考完笔者的基类设计后,可以自行DIY,写出自己习惯的套路来即可。

代码结构

1.结构

image

CodeArchitecture.png

2.说明

  • Utils:存放工具类和管理类。例如:分类Category...

  • Vendor:存放第三方框架。例如:MJRefresh...

  • Macros:存放常量。例如:宏(#define)定义常量,const常量,枚举(NS_ENUM)常量,inline函数,URL路径常量。

  • Resource:存放资源文件。例如:图片,Data,SQL,Plist,Json等文件。

  • Other: 公有的Model,View,Controller。例如:MHTextField...

  • BaseClass 全局基类View,Model,ViewController。用于继承。

BaseClass

关于BaseClass的设计,笔者主要从Model,View,ViewController来设计,但是关于Model和View的基类,这里建议大家移步iOS 基于MVVM + RAC + ViewModel-Based Navigation的微信开发(一)

https://www.jianshu.com/p/fd407a4ecb8e这篇文章关于Model和View的基类的解释说明,这里笔者就不再赘述,这里着重讲的是ViewController的基类设计和使用场景。基类文件结构如下

BaseClass.png

通过上图

收藏
0
sina weixin mail 回到顶部