iOS架构设计
23种设计模式的分类
1.创建型模式:5种
2.结构型设计模式:7种
3.框架级别的行为型设计模式:11种
众拾达人
如果你不改变什么,那什么都不会改变!
展开
-
iOS架构师—目录
1.认识设计模式,UML图建模,策略模式 2.MVC MVP MVVM 3.桥接模式 工厂模式 享元模式 4.SDwebImage 5.适配器模式 观察者模式 6.代理设计模式 消息转发机制 7.设计模式-构建者模式-中介者模式 8.设计模式-迭代器模式-组合设计模式 9.设计模式-责任链-模板模式 10.设计模式-命令-装饰-原型模式 11.设计模式-外观...原创 2018-05-23 16:55:47 · 811 阅读 · 0 评论 -
iOS架构师_认识设计模式
1.什么是设计模式? 概念:为解决特定场景下的问题而定制的解决方案 2.设计模式的基本原则 接口隔离原则: 接口里面只做必要的事情,不做其他相关的事情 需求:封装创建一个Button,但是按钮的尺寸由我自己控制 创建一个baseView BaseView.h #import <UIKit/UIKit.h> @interface BaseView...原创 2018-05-24 19:07:50 · 733 阅读 · 0 评论 -
iOS架构师_UML建模语言
UML UML统称建模语言,面向对象软件的表转化建模语言,包含Booch MOT OOSE 工具:StarUML 时序图原创 2018-05-25 16:24:32 · 692 阅读 · 0 评论 -
iOS架构师_策略模式
什么是策略设计模式? 概念:定义一系列的算法,并且将每个算法封装起来,算法之间还可以互相替换。这种设计模式称为策略模式。 为了解决if-else和switch-case的问题,在实际开发中,较长的if-else会使代码阅读困难。 代码示例:下面是一个简单的if-else代码 #import "ViewController.h" typedef NS_ENUM(NSInteger) { ...原创 2018-05-29 11:57:00 · 1647 阅读 · 0 评论 -
iOS架构师_架构模式(代理,block,通知,MVC,MVP,MVVM)
1.什么是架构? 没有明确的定义,属于设计的一方面,没明确的把设计和架构进行区分,它可以小到类与类之间的交互,大到不同模块之间,以及不同业务之间的交互,都可以从架构的层面去理解它。 所有架构和设计模式的目的都是为了解耦合 2.基本的架构基础 案例需求:女朋友让男朋友去做饭,完了以后给抱抱 GirlFriend类 .h #import &lt;Foundation/Foun...原创 2018-05-29 16:21:48 · 2073 阅读 · 0 评论 -
iOS架构师_桥接模式
桥接模式定义: 将抽象部分与它的实现部分分离,使它们都可以独立的变化。 原理:抽象层与实现层相分离,抽象层定义了供客户端调用的抽象接口,实现层提供了具体的逻辑,实现类的引用被封装到抽象层的实例中,桥接就此形成。 原始代码示例: 首先创建两个类:XiaoMiRemote(小米遥控器) XiaoMiTV(小米电视) XiaoMiTV.h #import <Foundat...原创 2018-05-30 15:03:15 · 593 阅读 · 0 评论 -
iOS架构师_工厂模式
简单工厂: 例子: 模式图 代码示例: 创建水果工厂类FruitsFactory 再创建水果类Fruits,以及Fruits的子类Apple,Orange,Banana FruitsFactory.h #import <Foundation/Foundation.h> #import "Fruits.h" #import "Apple.h" #import "...原创 2018-05-30 17:30:34 · 1314 阅读 · 0 评论 -
iOS架构师_享元模式
享元模式定义:相同的数据就拿来共享 1、可共享享元对象 2、享元池 减少同一类对象的大量创建,减少节约了内存空间。 使用范围:服务器端:查询火车票(共享对象) iOS端:多线程(线程池),UITableViewCell,UICollectionViewCell UML结构图 代码示例 创建工厂FlowerFactory类,并且创建类Flower Flower.h ...原创 2018-06-01 17:05:43 · 880 阅读 · 0 评论 -
iOS架构师_SDWebImage源码分析
1.对SDdemo的分析 针对SD的3.8.2版本进行分析,因为从git上面直接下载SD的源码,项目运行会报错,缺少libwebp这个库,我们下载3.8.2版本,运行 libwebp 是个webp的图片格式,属于谷歌的库,所以只能翻墙去国外的网站上去找,文章最后会给出libwebp的文件,webp格式的会压缩图片,使文件变小,节约用户流量 缺失文件路径:/Users/mac/Deskto...原创 2018-06-04 10:47:28 · 1042 阅读 · 0 评论 -
iOS架构师_适配器模式
适配器模式分为类适配器与对象适配器两种: 适配器模式UML图 类适配器:继承关系(被适配的类和类适配器是继承关系) 对象适配器:不是继承关系,是单向关联关系 例子: 美元转换为人民币 创建被适配的类AdapteeUSD AdapteeUSD.h #import &lt;Foundation/Foundation.h&gt; // 要适配的一个对象 @interfa...原创 2018-06-04 14:50:02 · 2480 阅读 · 2 评论 -
iOS架构师_观察者模式
定义: 观察者模式(有时又被称为模型-视图(View)模式、源-收听者(Listener)模式或从属者模式),一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。 示例代码:自己实现观察者模式 创建Protocol类型的接口文件SubProtocol协议类 SubProtoco...原创 2018-06-06 10:38:56 · 244 阅读 · 0 评论 -
iOS架构师_代理模式(代理和协议的区别)
代理模式的定义: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 UML示意图 代理与协议的区别: 代理原理:代码示例 裁判需要知道r跑了多远的信息. 创建Person类 Person.h // 裁判要知道你得多快 #import <Foundation/F...原创 2018-06-07 17:28:21 · 1867 阅读 · 0 评论 -
iOS架构师_消息转发机制
1.动态方法解析 对象在收到无法处理的消息时,会调用下面的方法,前者是调用类方法时会调用,后者是调用对象方法时会调用 //未实现类方法调用 + (BOOL)resolveClassMethod:(SEL)sel //未实现实例方法调用 + (BOOL)resolveInstanceMethod:(SEL)sel 在该方法中,需要给对象所属类动态的添加一个方法,并返回YES,表明可以处理 ...原创 2018-06-08 18:27:52 · 1994 阅读 · 0 评论 -
iOS架构师_代理模式(NSProxy)
我们通过NSProxyDemo案例来更进一步的了解代理模式 创建AbstarctProxy类 AbstarctProxy.h #import <Foundation/Foundation.h> @interface AbstarctProxy : NSProxy // 代理属性 @property (nonatomic, weak) id delegate; @end 创...原创 2018-06-11 16:16:35 · 1058 阅读 · 0 评论 -
iOS架构师_构建者模式
UML图 时序图 代码示例: 创建构建者协议类Builder #import &lt;Foundation/Foundation.h&gt; // 构建者 @protocol Builder &lt;NSObject&gt; // 构建部分 - (NSString *)builderPart; @end 创建具体生成者类ConcreteBuild ConcreteBu...原创 2018-06-12 18:35:58 · 545 阅读 · 0 评论