iOS设计模式 - 享元
2015-10-31 23:30
357 查看
iOS设计模式 - 享元
原理图
说明
享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。
源码
https://github.com/YouXianMing/iOS-Design-Patterns
细节
原理图
说明
享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。
源码
https://github.com/YouXianMing/iOS-Design-Patterns
// // Menu.h // FlyweightPattern // // Created by YouXianMing on 15/10/31. // Copyright © 2015年 ZiPeiYi. All rights reserved. // #import <Foundation/Foundation.h> #import "CoffeeFlavor.h" @interface Menu : NSObject /** * 获取指定味道的咖啡(如果没有则创建) * * @param flavor 味道 * * @return 指定味道的咖啡 */ - (CoffeeFlavor *)lookupWithFlavor:(NSString *)flavor; @end
// // Menu.m // FlyweightPattern // // Created by YouXianMing on 15/10/31. // Copyright © 2015年 ZiPeiYi. All rights reserved. // #import "Menu.h" @interface Menu () @property (nonatomic, strong) NSMutableDictionary <NSString *, CoffeeFlavor *> *flavors; @end @implementation Menu - (instancetype)init { self = [super init]; if (self) { self.flavors = [NSMutableDictionary dictionary]; } return self; } - (CoffeeFlavor *)lookupWithFlavor:(NSString *)flavor { NSParameterAssert(flavor); if ([self.flavors objectForKey:flavor] == nil) { CoffeeFlavor *coffeeFlavor = [[CoffeeFlavor alloc] init]; coffeeFlavor.flavor = flavor; self.flavors[flavor] = coffeeFlavor; } return [self.flavors objectForKey:flavor]; } @end
细节
相关文章推荐
- ios 多线程
- iOS开发小技巧(二)
- iOS开发小技巧(一)
- iOS9使用提示框进行文本输入的正确实现方式
- Quartz 2D学习(二)绘制曲线
- iOS开发:加广告
- iOS中copy 学习笔记
- 蓝懿ios 技术内容交流和心得分享10.31
- ios中的夜间模式(通知中心)
- YTKNetwork 使用高级教程
- ios开发Swif语言基本的参数、函数、方法的定义和调用
- iOS优化25条建议
- IOS优化
- iOS系统开发:发“彩信”
- #在蓝懿学习iOS的日子#第三个练习日
- iOS系统开发:打电话、发短信
- IOS开发涉及有点概念&相关知识点
- RSA加密算法在iOS9下的问题解决方案
- iOS开发中正则式的使用
- iOS-CALayer && CAAnimation