zoukankan      html  css  js  c++  java
  • 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

    细节

  • 相关阅读:
    [ProjectEuler.net] 14
    Design patterns
    初等函数定义
    Design patterns 1.6 Design for change
    Programming In Haskell chapter3
    桌面恶心的无法删除的图标之 淘宝购物 删除办法
    程序员学英语三部曲
    e的给定精度求法
    Summary about Architect Visit
    再谈“我是怎么招聘程序员的”(上)
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4915058.html
Copyright © 2011-2022 走看看