• 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

    细节

  • 相关阅读:
    XML相关资源
    【翻译】Windows下文件的命名
    显示文件的16进制编码(C++)
    函数模板的匹配
    最新的flex4.1和as3.0的帮助文档
    Flash/Flex 框架简介—PureMVC
    textfield的诡异
    灵异的bug
    互联网公司的发展都在于专注和坚持。
    python内置数据类型
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4915058.html
Copyright © 2020-2023  润新知