IOS設計模式-1.觀察者模式

來源:互聯網
上載者:User

什麼是觀察者模式

先說說生活中得小例子,還小得時候我們需要喝牛奶,為了喝上新鮮的牛奶,我們往往去一家專門訂購牛奶的店面,把我們的住家住址,還有訂購的牛奶的品牌告訴店裡面的負責人,然後我們每天就能喝上新鮮的牛奶了,這樣做得好處是,我們不需要去任何地方,店裡的負責人會親自把牛奶送給你。

從中我們也可以發現,這樣做還能避免“生產者”(製造牛奶的廠家)和“消費者”(我們)直接聯絡,其實就是降低兩個模組之間的耦合度。牛奶廠家把各個品牌的牛奶發貨到銷售牛奶的店面,然後通過消費者的訂購資訊(牛奶品牌,住家住址),把牛奶傳遞到我們“消費者”的手中。

 

在IOS開發裡面,可以通過通知來實現這個功能,等以後有機會接觸了KVO,再來好好總結。

註冊通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sendMilk:) name:@"quechao" object:nil];

訂購牛奶的店面就好比IOS裡面的通知中樞,註冊了一個通知,名字是quechao,並把self(消費者)作為觀察者,也就是當有名字是quechao的訊息發送過來時(廠家把quechao品牌的牛奶送給店面),會執行sendMilk方法,把牛奶送給消費者

發送訊息

[[NSNotificationCenter defaultCenter] postNotificationName:@“quechao” object:milk];

廠家把quecao品牌的牛奶發送給店面,通知收到訊息後執行sendMilk:方法

-(void)sendMilk:(NSNotification *) notification{    //code}

 

通知方法的優點是分離了生產者和消費者之間的聯絡,但正是這樣,往往事情太過於絕對也不好,就像這,一點聯絡都沒的話就容易導致代碼的可讀性差,通知多得時候,閱讀起來可能很複雜,沒有思路。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.