博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS设计模式 - 享元
阅读量:5798 次
发布时间:2019-06-18

本文共 1260 字,大约阅读时间需要 4 分钟。

iOS设计模式 - 享元

 

原理图

 

说明

享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。

 

源码

////  Menu.h//  FlyweightPattern////  Created by YouXianMing on 15/10/31.//  Copyright © 2015年 ZiPeiYi. All rights reserved.//#import 
#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 
*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

 

细节

 

转载地址:http://nvifx.baihongyu.com/

你可能感兴趣的文章
STL 算法
查看>>
分享:Backbone.js 样例站点与入门指南
查看>>
图的基本算法
查看>>
HTML基础(一)
查看>>
boost.circular_buffer简介
查看>>
Database Appliance并非Mini版的Exadata-还原真实的Oracle Unbreakable Database Appliance
查看>>
网页图片缩放(js)
查看>>
如何用Fiddler对Android应用进行抓包
查看>>
iOS为所需要的视图添加模糊效果--UIVisualEffectView
查看>>
HDU-1222 Wolf and Rabbit (欧几里得定理)
查看>>
Camera Calibration 相机标定:原理简介(五)
查看>>
ehcache实例
查看>>
python 匿名函数
查看>>
javascript实现-------------选择排序
查看>>
centOS中VMware Tools 安装
查看>>
oracle中以dba_、user_、v$_、all_、session_、index_开头的常...
查看>>
leetcode 116- Populating Next Right Pointers in Each Node
查看>>
spring项目启动错误——java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext...
查看>>
iOS开发网络篇—GET请求和POST请求
查看>>
字典dict
查看>>