iOS设计模式 - 原型
2015-07-29 19:50
465 查看
iOS设计模式 - 原型
原理图
说明
1. 原型模式指的是从一个已有的对象复制并创建出新的对象
2. 当一个类的实例之间存在差异,而这些差异仅是状态的若干组合,复制原型要比手工实例化更加方便
3. 当一个类并不容易创建(比如有着复杂的组合对象),且复制已有的组合对象要比对副本修改更加容易,此时,可以考虑使用原型模式
源码
https://github.com/YouXianMing/iOS-Design-Patterns
分析
抽象基类遵循了复制协议并实现了基本复制功能
实例化的类通过继承抽象基类来继承复制功能
* 进行字典和数组的深层次拷贝
* 数组与字典已完成了深层次拷贝
数组中的对象(或者字典中的对象)在实现拷贝时,也是需要实现NSCopying协议的,也可以继承实现了NSCopying协议的基类
原理图
说明
1. 原型模式指的是从一个已有的对象复制并创建出新的对象
2. 当一个类的实例之间存在差异,而这些差异仅是状态的若干组合,复制原型要比手工实例化更加方便
3. 当一个类并不容易创建(比如有着复杂的组合对象),且复制已有的组合对象要比对副本修改更加容易,此时,可以考虑使用原型模式
源码
https://github.com/YouXianMing/iOS-Design-Patterns
// // BaseCopyObject.h // PrototypePattern // // Created by YouXianMing on 15/7/29. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import <Foundation/Foundation.h> @interface BaseCopyObject : NSObject <NSCopying> /** * ==> 子类不要重写此方法 <== * * 复制操作 * * @param zone * * @return 新复制的对象 */ - (id)copyWithZone:(NSZone *)zone; /** * ==> 由子类重写 <== * * 参数赋值操作 * * @param baseCopyObject 复制操作的对象 */ - (void)parametersCopyOperationWithBaseCopyObject:(BaseCopyObject *)baseCopyObject; @end
// // BaseCopyObject.m // PrototypePattern // // Created by YouXianMing on 15/7/29. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "BaseCopyObject.h" @implementation BaseCopyObject - (id)copyWithZone:(NSZone *)zone { BaseCopyObject *copy = [[self class] allocWithZone:zone]; [self parametersCopyOperationWithBaseCopyObject:copy]; return copy; } - (void)parametersCopyOperationWithBaseCopyObject:(BaseCopyObject *)baseCopyObject { // 由子类重写 } @end
分析
抽象基类遵循了复制协议并实现了基本复制功能
实例化的类通过继承抽象基类来继承复制功能
* 进行字典和数组的深层次拷贝
* 数组与字典已完成了深层次拷贝
数组中的对象(或者字典中的对象)在实现拷贝时,也是需要实现NSCopying协议的,也可以继承实现了NSCopying协议的基类
相关文章推荐
- IOS的后台的持续定位
- iOS中内存管理问题
- ios 易用库
- iOS 打开扬声器以及插入耳机的操作
- iOS dSYM文件结构剖析(上)
- IOS 常用View属性设置
- iOS开发-关闭/收起键盘方法总结
- iOS界面调试工具 Reveal
- ios 工程代码整理
- iOS正则表达式(三)
- IOS--开发基础知识
- IOS--文件管理NSFileManager
- iOS系统 越狱系统还原(平刷)
- iOS开发——动画编程OC篇&(五)动画组
- 关于iOS 请求乱码问题 (改变编码方式为GBK)
- 关于IOS资源图片命名问题。
- iOS开发多线程篇—自定义NSOperation
- iOS开发——动画编程OC篇&(四)转场动画
- iOS开发——动画编程OC篇&(三)关键帧动画
- iOS开发——动画编程OC篇&(二)核心动画