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

细节

iOS设计模式 - 组合的更多相关文章

  1. IOS设计模式-组合设计模式

    前言:本篇博文将让你学会软件开发中的"何为树形结构"."何为组合模式"."组合模式可以解决的问题"等相关知识. 内容大纲: 1.树形结构 2 ...

  2. IOS设计模式之一(MVC模式,单例模式)

    iOS 设计模式-你可能已经听说过这个词,但是你真正理解它意味着什么吗?虽然大多数的开发者可能都会认为设计模式是非常重要的,然而关于设计模式这一主题的文章却不多,并且有时候我们开发者在写代码的时候也不 ...

  3. iOS设计模式 - 生成器

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

  4. iOS设计模式 - 原型

    iOS设计模式 - 原型 原理图 说明 1. 原型模式指的是从一个已有的对象复制并创建出新的对象 2. 当一个类的实例之间存在差异,而这些差异仅是状态的若干组合,复制原型要比手工实例化更加方便 3. ...

  5. iOS书摘之Objective-C编程之道 iOS设计模式解析

    来自<Objective-C编程之道iOS设计模式解析>一书的摘要总结 一.Prototype 原型模式 定义:使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象.(<设 ...

  6. iOS设计模式 - (1)概述

    近期可自由安排的时间比較多, iOS应用方面, 没什么好点子, 就先放下, 不写了.花点时间学学设计模式. 之后将会写一系列博文, 记录设计模式学习过程. 当然, 由于我自己是搞iOS的, 所以之后设 ...

  7. 16. 星际争霸之php设计模式--组合模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  8. Java设计模式——组合模式

    JAVA 设计模式 组合模式 用途 组合模式 (Component) 将对象组合成树形结构以表示“部分-整体”的层次结构.组合模式使得用户对单个对象和组合对象的使用具有唯一性. 组合模式是一种结构型模 ...

  9. iOS 设计模式之工厂模式

    iOS 设计模式之工厂模式 分类: 设计模式2014-02-10 18:05 11020人阅读 评论(2) 收藏 举报 ios设计模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一 ...

随机推荐

  1. Chapter 3 Phenomenon——14

    They wheeled me away then, to X-ray my head. 他们把我移到了一边用X光照射我的头. 他们把我放到轮椅上,推着我去做头部X光检查. I told them t ...

  2. unity 图片变纯色填充

    unity自带shader 即可

  3. Java性能调优:利用VisualVM进行性能分析

    JVisualVM 简介 VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC ...

  4. BiLSTM+CRF 实体识别

    https://www.cnblogs.com/Determined22/p/7238342.html 这篇博客 里面这个公式表示抽象的含义,表示的是最后的分数由他们影响,不是直观意义上的相加. 为什 ...

  5. Go 压测

    1. 单测 + 压测 压测 go test -bench=. -benchmem 单元测试 go test -v . 2. pprof + 火焰图(查看cpu占用,内存占用) 嵌入代码 import ...

  6. Ceph 存储集群 - 存储池

    目录 一.存储池介绍 二.存储池命令 1. 列出存储池 2. 创建存储池 3. 设置存储池配额 4. 删除存储池 5. 重命名存储池 6. 查看存储池统计信息 7. 生成存储池快照 8. 删除存储池快 ...

  7. CentOS SVN Failed to load JavaHL Library

    在CentOS 6上的eclipse安装了svbclipse插件后,svn不能使用,并且第一次使用的时候还出现下面错误窗口提示 Failed to load JavaHL Library. These ...

  8. 使用Windbg找出死锁,解决生产环境中运行的软件不响应请求的问题

    前言 本文介绍本人的一次使用Windbg分析dump文件找出死锁的过程,并重点介绍如何确定线程所等待的锁及判断是否出现了死锁. 对于如何安装及设置Windbg请参考:<使用Windbg和SoS扩 ...

  9. [转]LINQ: Using INNER JOIN, Group and SUM

    本文转自:https://stackoverflow.com/questions/530925/linq-using-inner-join-group-and-sum SELECT T1.Column ...

  10. [转]Configure Network Drive Visible for SQL Server During Backup and Restore Using SSMS

    本文转自:https://mytechmantra.com/LearnSQLServer/Configure-Network-Drive-Visible-for-SQL-Server-During-B ...