iOS 基于MVC设计模式的基类设计

点击上方“iOS开发”,选择“置顶公众号”

关键时刻,第一时间送达!

640?

640?wx_fmt=gif


前言


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

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


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.结构


iOS 基于MVC设计模式的基类设计_第1张图片

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


通过上图

你可能感兴趣的:(iOS 基于MVC设计模式的基类设计)