您的位置:首页 > 移动开发 > IOS开发

iOS设计模式 - 享元

2015-10-31 23:30 357 查看
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


细节

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: