iOS设计模式 - 原型

简介:

iOS设计模式 - 原型

 

原理图

 

说明

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开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(1)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(1)
294 0
|
8月前
|
设计模式 存储
二十三种设计模式全面解析-原型模式进阶之原型管理器:集中管理对象原型的设计模式之道
二十三种设计模式全面解析-原型模式进阶之原型管理器:集中管理对象原型的设计模式之道
|
设计模式 搜索推荐 iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(7)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(7)
551 1
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(7)
|
7月前
|
设计模式 Java 编译器
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
|
设计模式 API iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(3)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(3)
462 0
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(3)
|
设计模式 API iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(2)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(2)
321 0
|
设计模式 iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(6)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(6)
290 0
|
设计模式 iOS开发 UED
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(4)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(4)
283 0
|
设计模式 iOS开发
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(5)
带你读《2022技术人的百宝黑皮书》——淘宝iOS扫一扫架构升级 - 设计模式的应用(5)
291 0
|
设计模式 JavaScript
“工厂、构造、原型” 设计模式与 JS 继承
“工厂、构造、原型” 设计模式与 JS 继承