首页 / IOS / iOS设计模式 - 访问者
iOS设计模式 - 访问者
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iOS设计模式 - 访问者,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2690字,纯文字阅读大概需要4分钟。
内容图文
iOS设计模式 - 访问者
原理图
说明
表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。
源码
https://github.com/YouXianMing/VisitorPattern
// // ElementProtocol.h // VisitorPattern // // Created by YouXianMing on 15/10/27. // Copyright ? 2015年 ZiPeiYi. All rights reserved. // #import <Foundation/Foundation.h> @protocol VisitorProtocol; @protocol ElementProtocol <NSObject> /** * 接收访问者 * * @param visitor 访问者对象 */ - (void)accept:(id <VisitorProtocol>)visitor; /** * 元素公共的操作 */ - (void)operation; @end
// // VisitorProtocol.h // VisitorPattern // // Created by YouXianMing on 15/10/27. // Copyright ? 2015年 ZiPeiYi. All rights reserved. // #import <Foundation/Foundation.h> #import"ElementProtocol.h"@protocol VisitorProtocol <NSObject> - (void)visitElement:(id <ElementProtocol>)element; @end
// // ElementCollection.h // VisitorPattern // // Created by YouXianMing on 15/10/27. // Copyright ? 2015年 ZiPeiYi. All rights reserved. // #import <Foundation/Foundation.h> @protocol ElementProtocol; @interface ElementCollection : NSObject /** * 添加元素 * * @param element 元素 * @param key 元素的键值 */ - (void)addElement:(id <ElementProtocol>)element withKey:(NSString *)key; /** * 获取所有元素的键值 * * @return 所有元素的键值 */ - (NSArray *)allKeys; /** * 根据元素键值获取元素 * * @param key 元素的键值 * * @return 元素 */ - (id <ElementProtocol>)elementWithKey:(NSString *)key; @end
// // ElementCollection.m // VisitorPattern // // Created by YouXianMing on 15/10/27. // Copyright ? 2015年 ZiPeiYi. All rights reserved. // #import " ElementCollection.h " #import " ElementProtocol.h " @interface ElementCollection () @property (nonatomic, strong) NSMutableDictionary *elementsDictionary; @end@implementation ElementCollection - (instancetype)init { self = [super init]; if (self) { self.elementsDictionary = [NSMutableDictionary dictionary]; } return self; } - (void)addElement:(id <ElementProtocol>)element withKey:(NSString *)key { NSParameterAssert(element); NSParameterAssert(key); [self.elementsDictionary setObject:element forKey:key]; } - (NSArray *)allKeys { return self.elementsDictionary.allKeys; } - (id <ElementProtocol>)elementWithKey:(NSString *)key { NSParameterAssert(key); return [self.elementsDictionary objectForKey:key]; } @end
细节
原文:http://www.cnblogs.com/YouXianMing/p/4913584.html
内容总结
以上是互联网集市为您收集整理的iOS设计模式 - 访问者全部内容,希望文章能够帮你解决iOS设计模式 - 访问者所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。