码迷,mamicode.com
首页 > 移动开发 > 详细

iOS设计模式 - 原型

时间:2015-07-29 15:28:16      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

iOS设计模式 - 原型

技术分享

 

原理图

技术分享

 

说明

1. 原型模式为复制这个原型并创建新的对象

2. 不同类的实例间差异仅是状态的若干组合,因此,复制原型要比手工实例化更加方便

3. 类不容易创建,每个组件可把其他组件作为子节点的组合对象,复制已有的组合对象要比对副本修改更加容易

 

源码

https://github.com/YouXianMing/PrototypePattern

//
//  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设计模式 - 原型

标签:

原文地址:http://www.cnblogs.com/YouXianMing/p/4685934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!