zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

iOS设计模式 - 享元

2023-09-14 08:57:30 时间

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;

@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扫一扫架构升级 - 设计模式的应用 本文在“扫一扫功能的不断迭代,基于设计模式的基本原则,逐步采用设计模式思想进行代码和架构优化”的背景下,对设计模式在扫一扫中新的应用进行了总结。
1.外观模式简介 外观模式(Facade)在开发过程中的运用频率非常高,尤其是在现阶段各种第三方SDK充斥在我们的周边,而这些SDK很大概率会使用外观模式。
模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中。
建议45:设计模式是特定环境下的特定问题的解决方案 设计模式是某种特定设计的模板或指导原则。 建议46:MVC模式是一种复合或聚合模式 MVC 是一种高级别的模式,关注的是应用程序的全局架构,并根据各种对象在程序中发挥的作用对其进行分类。