• 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

    细节

  • 相关阅读:
    使用WLC+Portal完成认证
    WLAN PSK认证
    Bug搬运工-flexconnect AP losing Vlan mapping and fall back to default vlan
    Catalyst 9400配置StackWise Virtual
    如何在Wave2 AP上更改时区
    VMware Workstation导入ova镜像文件时报错?
    Password Recovery on Cisco Catalyst 3850
    Mobility Express初始化和升级
    C9300升级-TFTP
    查看WLC的SFP模块信息
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4915058.html
Copyright © 2020-2023  润新知