iOS设计模式 - 组合

原理图

说明

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

//
//  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

细节

转载于:https://www.cnblogs.com/ming1025/p/6656884.html

iOS设计模式 - 组合相关推荐

  1. iOS设计模式 - 生成器

    iOS设计模式 - 生成器 原理图 说明 1. 将构建复杂对象的过程拆分成一个一个的模块,通过统一的指导者来指导对象的构建过程称之为生成器模式 2. 生成器模式适合用于构建组合的对象 源码 https ...

  2. [译] iOS 设计模式进阶

    原文地址:Intermediate Design Patterns in Swift 原文作者:raywenderlich.com 译文出自:掘金翻译计划 本文永久链接:github.com/xitu ...

  3. iOS 设计模式浅析 0 - 前言

    小弟不才, 但又喜欢分享一些自己知道的小知识, so 斗胆写下 iOS 常用设计模式的实用和对其的见解. 如果有错的地方请联系我 QQ: 573880506, 不胜感激(毕竟程序员, 标点符号都用的英 ...

  4. iOS设计模式四部曲(二) 结构型模式 内附Demo

    本篇是四部曲的第二篇,第一篇请点这里iOS设计模式四部曲(一):创建型模式 内附Demo,关于设计模式强烈推荐图书<Head First设计模式>以及<研磨设计模式>.由于个人 ...

  5. iOS设计模式四部曲(三):行为型模式 内附Demo

    本篇是四部曲的第三篇,第一篇请点这里iOS设计模式四部曲(一):创建型模式,第二篇请点击这里iOS设计模式四部曲(二):结构型模式.由于个人能力有限,文中难免有一些遗漏或者错误,请各位看官不吝赐教!谢 ...

  6. iOS设计模式 - 备忘录

    iOS设计模式 - 备忘录 原理图 说明 1. 在不破坏封装的情况下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态 2. 本人已经将创建状态与恢复状态 ...

  7. 设计模式---组合模式

    设计模式---组合模式 什么是组合模式:Composite? 使用场景 代码示例 组合模式模板 组合模式的安全性和透明性 总结 优缺点: 适用场景: 什么是组合模式:Composite? 计算机的文件 ...

  8. iOS设计模式 - 享元

    iOS设计模式 - 享元 原理图 说明 享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件:它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件.通常物件中的部分 ...

  9. iOS设计模式 - 迭代器

    iOS设计模式 - 迭代器 原理图 说明 提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. 源码 https://github.com/YouXianMing/iOS-Des ...

最新文章

  1. Oracle 11g R2 64位在 win7 64位的安装流程图解
  2. C++求解最大子序列和问题
  3. iteritems()与items()
  4. HUST软工1506班第2周作业成绩公布
  5. 企业使用云计算低效益怎么办?区块链或成良药
  6. iOS:Xcode7下创建 .a静态库 和 .framework静态库
  7. CMS软件系统架构设计思考
  8. android如何展示富文本_Android中如何在textView实现富文本
  9. CentOS7 完全卸载MySQL
  10. 大学高数常微分方程思维导图_思维导图_2016考研数学:高数中六种常见题型归纳_沪江英语...
  11. BSOD分析之空指针引用
  12. ORACLE11g数据库安装-刘建-专题视频课程
  13. NOI 4.3 1538: Gopher II(匈牙利算法求最大匹配)
  14. 作为刚出培训机构的面试之路
  15. 327 玉米田(状态压缩dp)
  16. 【西欧经济史第二版】【4】第一章 导言
  17. 第12章 对话框
  18. Java实现印刷体转手写体—妈妈再也不用担心我被罚抄作业了
  19. Python数据分析示例(2)Day3
  20. iOS Developer:真机测试

热门文章

  1. java实现聊天室界面javafx_java 聊天室WeChat
  2. linux 内核驱动的poll,Linux驱动基石之POLL机制
  3. matlab xlsread参数_利用MATLAB批量完成科研数据处理
  4. 大数据学习规划(新手入门)
  5. 2top 存储过程 查看_S7-1500 PLC的存储区
  6. 安卓耗电监控app_Android系统十大耗电应用拍照APP排第一
  7. kingcms php 排序 标签,修改PHPCMS V9列表排序,listorder、order排序功能的方法
  8. c语言计算机二级改错题类型,C语言计算机二级改错题
  9. iis创建php网站,iis怎么搭建php
  10. 服务器双网卡设置安全_服务器硬件介绍之服务器主板