本文共 1575 字,大约阅读时间需要 5 分钟。
iOS设计模式 - 组合
原理图
说明
将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。
源码
//// File.h// CompositePattern//// Created by YouXianMing on 15/10/20.// Copyright © 2015年 ZiPeiYi. All rights reserved.//#importtypedef 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 *)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*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 *)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
细节
转载地址:http://jvyyo.baihongyu.com/