• 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协议的基类

  • 相关阅读:
    JavaScript基础
    Dao的扩展
    错题解析
    实现windows程序的数据绑定
    C#第三章
    第二章
    初始windows程序
    使用ADO.NET查询和操作数据
    使用ADO.NET访问数据库
    4.计算机层次与编程语言
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4685934.html
Copyright © 2020-2023  润新知