iOS设计模式 - 享元
iOS设计模式 - 享元

原理图

说明
享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。
源码
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设计模式 - 享元的更多相关文章
- 8. 星际争霸之php设计模式--享元模式
		
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
 - C++设计模式——享元模式
		
本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.如果这篇文章对你有帮助,你可以请我喝杯咖啡. » 本文链接:http:// ...
 - java设计模式——享元模式
		
一. 定义与类型 定义:提供了减少对象数量从而改善应用所需的对象结构的方式,运用共享技术有效地支持大量细粒度的对象 类型:结构性 二. 使用场景 (1) 常常应用于系统底层的开发,以便解决系统的性能 ...
 - 【设计模式】Java设计模式 - 享元模式
		
Java设计模式 - 享元模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起记录分享自己 ...
 - [工作中的设计模式]享元模式模式FlyWeight
		
一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...
 - JAVA 设计模式 享元模式
		
用途 享元模式 (Flyweight) 运用共享技术有效地支持大量细粒度的对象. 享元模式是一种结构型模式. 结构
 - 深入浅出设计模式——享元模式(Flyweight Pattern)
		
模式动机 面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数.当对象数量太多时,将导致运行代价过高,带来性能下降等问题.享元模式正是为解决这一类问题而诞生 ...
 - Java设计模式-享元模式(Flyweight)
		
享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用. FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查 ...
 - java设计模式---享元模式
		
享元模式 顾名思义:共享元对象.如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用创建新的对象. 享元模式是为数不多的.只为提升系统性能而生的设计模式.它的主要作用就 ...
 
随机推荐
- Java处理正则表达式特殊字符转义 转
			
正则需要转义字符:'$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|' 异常现象: java.util.reg ...
 - [Hive]HiveSQL解析原理
			
Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析.Hive的稳定性和 ...
 - haproxy配置文件详解--转
			
原始出处:http://itnihao.blog.51cto.com/1741976/915537 #/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.c ...
 - UOJ #356. 【JOI2017春季合宿】Port Facility
			
Description 小M有两个本质不同的栈. 无聊的小M找来了n个玩具.之后小M把这n个玩具随机顺序加入某一个栈或把他们弹出. 现在小M告诉你每个玩具的入栈和出栈时间,现在她想考考小S,有多少种方 ...
 - css3 animation(动画)笔记
			
在开始介绍Animation之前我们有必要先来了解一个特殊的东西,那就是"Keyframes",我们把他叫做“关键帧”,玩过flash的朋友可能对这个东西并不会陌生.下面我们就一起 ...
 - Java基础教程(16)--注解
			
一.注解基础知识 1.注解的格式 最简单的注解就像下面这样: @Entity @符号指示编译器其后面的内容是注解.在下面的例子中,注解的名称为Override: @Override void ...
 - Anychart隐藏属性
			
一.嵌入字体的使用 font标签可以使用嵌入字体,只需加入embed="true"即可.
 - 简单创建json格式文件
			
简单创建json格式文件 核心就两点: addProperty 添加属性(也就是加键值对) add是添加 另外的object对象 然后直接toString()输出 核心代码如下; public cla ...
 - gulp入门实践
			
前言:大家可能都听说过gulp,知道它是一种前端自动化开发工具,可以用来文件压缩.语法检查.文件合并和编译less等,但可能并不知道要怎么用?看过官方文档,也看过许多博客,但基本都是讲gulp的API ...
 - setInterval和setTimeout的区别以及setInterval越来越快问题的解决方法
			
setInterval()和setTimeout()方法都是js原生的定时方法,当然它们两个的作用也是不同的,并且最近在做上下滚动公告栏的时候,发现了setInterval()非常令人抓狂的问题,那就 ...