iOS设计模式 - 组合
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设计模式 - 组合的更多相关文章
- IOS设计模式-组合设计模式
前言:本篇博文将让你学会软件开发中的"何为树形结构"."何为组合模式"."组合模式可以解决的问题"等相关知识. 内容大纲: 1.树形结构 2 ...
- IOS设计模式之一(MVC模式,单例模式)
iOS 设计模式-你可能已经听说过这个词,但是你真正理解它意味着什么吗?虽然大多数的开发者可能都会认为设计模式是非常重要的,然而关于设计模式这一主题的文章却不多,并且有时候我们开发者在写代码的时候也不 ...
- iOS设计模式 - 生成器
iOS设计模式 - 生成器 原理图 说明 1. 将构建复杂对象的过程拆分成一个一个的模块,通过统一的指导者来指导对象的构建过程称之为生成器模式 2. 生成器模式适合用于构建组合的对象 源码 https ...
- iOS设计模式 - 原型
iOS设计模式 - 原型 原理图 说明 1. 原型模式指的是从一个已有的对象复制并创建出新的对象 2. 当一个类的实例之间存在差异,而这些差异仅是状态的若干组合,复制原型要比手工实例化更加方便 3. ...
- iOS书摘之Objective-C编程之道 iOS设计模式解析
来自<Objective-C编程之道iOS设计模式解析>一书的摘要总结 一.Prototype 原型模式 定义:使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象.(<设 ...
- iOS设计模式 - (1)概述
近期可自由安排的时间比較多, iOS应用方面, 没什么好点子, 就先放下, 不写了.花点时间学学设计模式. 之后将会写一系列博文, 记录设计模式学习过程. 当然, 由于我自己是搞iOS的, 所以之后设 ...
- 16. 星际争霸之php设计模式--组合模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- Java设计模式——组合模式
JAVA 设计模式 组合模式 用途 组合模式 (Component) 将对象组合成树形结构以表示“部分-整体”的层次结构.组合模式使得用户对单个对象和组合对象的使用具有唯一性. 组合模式是一种结构型模 ...
- iOS 设计模式之工厂模式
iOS 设计模式之工厂模式 分类: 设计模式2014-02-10 18:05 11020人阅读 评论(2) 收藏 举报 ios设计模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一 ...
随机推荐
- springboot-9-在springboot中引入bean
在非spring管理的包中引入spring管理的类, 可以使用一个类继承ApplicationContextAware即可 分两种, 第一种该类在spring的包扫描范围之下: package com ...
- 数据序列化导读(2)[YAML]
上一节讲了JSON, 这一节将介绍YAML.可以认为,YAML是JSON的超集,但是更加简单易用,适合人类阅读和书写. 1. 什么是YAML? YAML是YAML Ain't Markup Lang ...
- java 集合框架小结
一:集合框架 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构. 任何集合框架都包含三大块内容:对外的接口.接口的实现和对集合运算的算法. 接口:即表示集合的抽象数据类型.Colle ...
- Spring Framework’s WebDataBinder
Last week, I was just outside our nation’s capital teaching Spring Web MVC Framework to a wonderful ...
- 关于post跨域请求数据的问题-包括同源策略
在<system.webServer>配置下面加入 <httpProtocol> <customHeaders> <add name="Access ...
- c#基础学习(0709)之vs通过抽象方法实现多态
抽象类不能用来实例化对象 1.抽象类中可以有实例成员,也可以有抽象成员 2.抽象成员不能有任何实现 3.抽象类.抽象成员必须包含在抽象类中 4.抽象类不能用来实例化对象,既然抽象类不能被实例化,那么抽 ...
- .net面试题[转载]
1.简述private.protected.public.internal修饰符的访问权限. private:私有成员,在类的内部才可以访问. protected:保护成员,该类内部和继承类中可以访问 ...
- CentOS普通用户没有sudo权限
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等.这样不仅减少了root用户的登录 和管理时间,同样也提高了安全 ...
- 微信小程序学习资料整理
基础篇 官网: https://mp.weixin.qq.com/cgi-bin/wx 微信小程序: 小程序是一种新的开放能力,开发者可以快速地开发一个小程序.小程序可以在微信内被便捷地获取和传播,同 ...
- ios app真正的相互!!调用
1.需求:A应用打开B.B回跳到A 2.问题: 看到网络上的文档讲的大多数都是app单向跳转的例子,而我们在跳转到第二个app的时候往往需要返回到原来的app,虽然支付宝微信等第三方等应用会有回调 ...