真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

設(shè)計(jì)模式------單利的模式-創(chuàng)新互聯(lián)

單例模式的意思就是只有一個(gè)實(shí)例。單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。這個(gè)類稱為單例類。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),長(zhǎng)治企業(yè)網(wǎng)站建設(shè),長(zhǎng)治品牌網(wǎng)站建設(shè),網(wǎng)站定制,長(zhǎng)治網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,長(zhǎng)治網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1.單例模式的要點(diǎn):

顯然單例模式的要點(diǎn)有三個(gè);一是某個(gè)類只能有一個(gè)實(shí)例;二是它必須自行創(chuàng)建這個(gè)實(shí)例;三是它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。

2.單例模式的優(yōu)點(diǎn):

1.實(shí)例控制:Singleton 會(huì)阻止其他對(duì)象實(shí)例化其自己的 Singleton 對(duì)象的副本,從而確保所有對(duì)象都訪問(wèn)唯一實(shí)例。

2.靈活性:因?yàn)轭惪刂屏藢?shí)例化過(guò)程,所以類可以更加靈活修改實(shí)例化過(guò)程

單例模式是 iOS 常用設(shè)計(jì)模式中的一種. 

單例設(shè)計(jì)模式作用:是這個(gè)類的一個(gè)對(duì)象成為系統(tǒng)中的唯一實(shí)例,因此 需要一種唯一的方法去創(chuàng)建這個(gè)對(duì)象并返回這個(gè)對(duì)象的地址..那么, 我們適合使用單利模式呢?

1、類只能有一個(gè)實(shí)例,而且必須從一個(gè)為人熟知的訪問(wèn)點(diǎn)對(duì)其訪問(wèn)。2、這個(gè)唯一的實(shí)例只能通過(guò)子類化進(jìn)行擴(kuò)展,而且擴(kuò)展的對(duì)象不會(huì)破壞客戶端代碼。

那么用Objective-C如何實(shí)現(xiàn)單例模式呢?下面我們來(lái)新建一個(gè)Singleton類,在Singleton.h中實(shí)現(xiàn)如下

  1. @interface Singleton : NSObject  
      
    + (Singleton *) sharedInstance;  
      
    @end

在Singleton.m

  1. @implementation Singleton  
      
    static Singleton * sharedSingleton = nil;  
      
    + (Singleton *) sharedInstance  
    {  
        if (sharedSingleton == nil) {  
            sharedSingleton = [[Singleton alloc] init];  
        }  
        return sharedSingleton;  
    }  
      
    @end

這樣就創(chuàng)建一個(gè)簡(jiǎn)單的單例模式,實(shí)際上有一部分程序員也是這樣實(shí)現(xiàn)的,但實(shí)際上這是一個(gè)不“嚴(yán)格”版本,在實(shí)際中使用,可能會(huì)遇到發(fā)起調(diào)用的對(duì)象不能以其他分配方式實(shí)例化單例對(duì)象,否則,就會(huì)創(chuàng)建多個(gè)實(shí)例。(之前有人和我討論過(guò)這個(gè)問(wèn)題,說(shuō)使用者應(yīng)該嚴(yán)格按照接口來(lái)使用,當(dāng)實(shí)際上Singleton是一個(gè)對(duì)象,我們不能保證使用者不會(huì)使用其他的方法去創(chuàng)建(比如alloc),這個(gè)時(shí)候他就會(huì)創(chuàng)建多個(gè)實(shí)例,這樣就會(huì)出現(xiàn)這些無(wú)法感知的bug)

下面我對(duì)Singleton.m的進(jìn)行改進(jìn)

@implementation Singleton  
  
static Singleton * sharedSingleton = nil;  
  
+ (Singleton *) sharedInstance  
{  
    if (sharedSingleton == nil) {  
        sharedSingleton = [[super allocWithZone:NULL] init];  
    }  
    return sharedSingleton;  
}  
  
+ (id) allocWithZone:(struct _NSZone *)zone  
{  
    return [[self sharedInstance] retain];  
}  
  
- (id) copyWithZone:(NSZone *) zone  
{  
    return self;  
}  
  
- (id) retain  
{  
    return self;  
}  
  
- (NSUInteger) retainCount  
{  
    return NSUIntegerMax;  
}  
  
  
- (void) release  
{  
    //  
}  
  
- (id) autorelease  
{  
    return self;  
}  
  
@end
也許你注意到了,我重載了allocWithZone:,保持了從sharedInstance方法返回的單例對(duì)象,使用者哪怕使用alloc時(shí)也會(huì)返回唯一的實(shí)例(alloc方法中會(huì)先調(diào)用allocWithZone:創(chuàng)建對(duì)象)。而retain等內(nèi)存管理的函數(shù)也被重載了,這樣做讓我們有了把Singleton類變得“嚴(yán)格”了。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。


網(wǎng)站題目:設(shè)計(jì)模式------單利的模式-創(chuàng)新互聯(lián)
標(biāo)題URL:http://weahome.cn/article/cehcdp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部