iOS设计模式 - 组合
2015-10-20 21:43
351 查看
iOS设计模式 - 组合
原理图
说明
将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。
源码
https://github.com/YouXianMing/iOS-Design-Patterns
细节
原理图
说明
将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。
源码
https://github.com/YouXianMing/iOS-Design-Patterns
// // File.h // CompositePattern // // Created by YouXianMing on 15/10/20. // Copyright © 2015年 ZiPeiYi. All rights reserved. // #import <Foundation/Foundation.h> typedef enum : NSUInteger { kFolder, // 文件夹 kFile, // 文件 } FileType; @interface File : NSObject #pragma mark - 基本属性 /** * 文件类型 */ @property (nonatomic) FileType fileType; /** * 文件夹或者文件的名字 */ @property (nonatomic, strong) NSString *name; /** * 添加文件 * * @param file 文件 */ - (void)add:(File *)file; /** * 所有文件 * * @return 文件的文件夹 */ - (NSArray <File *> *)files; #pragma mark - 便利构造器 /** * 返回创建出来的文件夹或者文件 * * @param type 文件类型 * @param name 文件名字 * * @return 创建出来的实例对象 */ + (instancetype)createWithFileType:(FileType)type name:(NSString *)name; @end
// // File.m // CompositePattern // // Created by YouXianMing on 15/10/20. // Copyright © 2015年 ZiPeiYi. All rights reserved. // #import "File.h" @interface File () @property (nonatomic, strong) NSMutableArray <File *> *filesArray; @end @implementation File - (instancetype)init { self = [super init]; if (self) { self.filesArray = [NSMutableArray array]; } return self; } - (void)add:(File *)file { [self.filesArray addObject:file]; } - (NSArray <File *> *)files { return self.filesArray; } + (instancetype)createWithFileType:(FileType)type name:(NSString *)name { File *file = [[[self class] alloc] init]; file.fileType = type; file.name = name; return file; } @end
细节
相关文章推荐
- iOS NSData 和十六进制字符串之间的相互转换
- iOS-语言本地化
- iOS---自定义带占位文字placeholder的TextView
- iOS开发中常用的第三方插件和框架小结
- iOS初探KVO
- iOS项目中全局变量的定义与使用
- iOS7编译错误:CGContextSaveGState...please set CG_CONTEXT_SHOW_BACKTRACE...
- iOS开发之3D Touch
- iOS图形绘制方法汇总及图片处理
- iOS_AutoLayout自动布局
- IOS 基于APNS消息推送原理与实现
- iOS中的单例
- iOS9开发--(Content Blocker)Safari广告拦截详解
- iOS内存管理---block机制详解
- IOS开发证书配置问题总结
- IOS引用计数的小细节
- Xcode6下导入iOS7模拟器
- 蓝懿iOS 技术内容和心得 10。20
- iOS开发3-使用DOM(GData)解析XML数据
- iOS 字符串常用编码互相转换