原型模式

定义

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

使用情况

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

实现

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

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

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

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

@interface Student : NSObject 

@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];

你可能感兴趣的:(原型模式)