原型模式

定义

通过复制来创建新的对象,就叫做原型模式。

使用情况

1.类之间差异小,个别属性的不同
2.要实例化的类是在运行时决定的

实现

浅复制,深复制
浅复制,只复制指针,指针指向的内存地址一样
深复制,复制指针和指针指向的对象

自定义对象想要实现复制,需要实现NSCopying协议及方法

- (id)copyWithZone:(nullable NSZone *)zone

创建Student对象,并实现NSCoping协议

@interface Student : NSObject <NSCopying>

@property (copy, nonatomic) NSString *name;

@property (assign, nonatomic) int age;

@property (copy, nonatomic) NSString *phone;

@property (copy, nonatomic) NSString *address;

@end

实现拷贝的方法

- (id)copyWithZone:(nullable NSZone *)zone{

    Student *stu = [[Student class] allocWithZone:zone];
    stu.name = self.name;
    stu.age = self.age;
    stu.phone = self.phone;
    stu.address = self.address;
    return stu;
}

调用

    Student *stu = [[Student alloc] init];
    stu.name = @"张三";
    stu.age = 12;
    stu.phone = @"21123123";
    stu.address = @"北京";

    Student *stu2 = [stu copy];

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文大部分内容翻译至《Pro Design Pattern In Swift》By Adam Freeman,一...
    ZhouMac阅读 3,945评论 0 2
  • 基本概念 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 从上图可以看到,Prototy...
    傻傻小萝卜阅读 3,823评论 0 1
  • 原型模式 介绍 在许多面向对象的应用程序中,有些对象的创建代价过大或者过于复杂。要是可以重建相同的对象并作轻微的改...
    666真666阅读 3,262评论 0 2
  • 原型模式 原型模式是非常简单的一种模式,在我们的实际开发中经常用到这种模式,例如你创建的可变字典、可变字符串调用c...
    小帅798阅读 3,362评论 0 0
  • 今天,似乎已经到极限了 在希望和深渊的边缘徘徊,还是希望多一些吧 因为我不是那么想死 一位曾经朋友的离去,是我识人...
    胡桃瞧瞧看阅读 1,306评论 0 0