原型模式

定義

通過復(fù)制來創(chuàng)建新的對象,就叫做原型模式。

使用情況

1.類之間差異小,個別屬性的不同
2.要實(shí)例化的類是在運(yùn)行時決定的

實(shí)現(xiàn)

淺復(fù)制,深復(fù)制
淺復(fù)制,只復(fù)制指針,指針指向的內(nèi)存地址一樣
深復(fù)制,復(fù)制指針和指針指向的對象

自定義對象想要實(shí)現(xiàn)復(fù)制,需要實(shí)現(xiàn)NSCopying協(xié)議及方法

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

創(chuàng)建Student對象,并實(shí)現(xiàn)NSCoping協(xié)議

@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

實(shí)現(xiàn)拷貝的方法

- (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;
}

調(diào)用

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

    Student *stu2 = [stu copy];

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文大部分內(nèi)容翻譯至《Pro Design Pattern In Swift》By Adam Freeman,一...
    ZhouMac閱讀 745評論 0 2
  • 基本概念 原型模式:用原型實(shí)例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象 從上圖可以看到,Prototy...
    傻傻小蘿卜閱讀 735評論 0 1
  • 原型模式 介紹 在許多面向?qū)ο蟮膽?yīng)用程序中,有些對象的創(chuàng)建代價(jià)過大或者過于復(fù)雜。要是可以重建相同的對象并作輕微的改...
    666真666閱讀 521評論 0 2
  • 原型模式 原型模式是非常簡單的一種模式,在我們的實(shí)際開發(fā)中經(jīng)常用到這種模式,例如你創(chuàng)建的可變字典、可變字符串調(diào)用c...
    小帥798閱讀 545評論 0 0
  • 今天,似乎已經(jīng)到極限了 在希望和深淵的邊緣徘徊,還是希望多一些吧 因?yàn)槲也皇悄敲聪胨?一位曾經(jīng)朋友的離去,是我識人...
    胡桃瞧瞧看閱讀 230評論 0 0

友情鏈接更多精彩內(nèi)容