您的位置:首页 > 移动开发 > IOS开发

iOS设计模式 - 组合

2015-10-20 21:43 351 查看
iOS设计模式 - 组合



原理图



说明

将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。

源码

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


细节

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: