先說說生活中得小例子,還小得時候我們需要喝牛奶,為了喝上新鮮的牛奶,我們往往去一家專門訂購牛奶的店面,把我們的住宅地址,還有訂購的牛奶的品牌告訴店裡面的負責人,然後我們每天就能喝上新鮮的牛奶了,這樣做得好處是,我們不需要去任何地方,店裡的負責人會親自把牛奶送給你。
從中我們也可以發現,這樣做還能避免“生產者”(制造牛奶的廠家)和“消費者”(我們)直接聯系,其實就是降低兩個模塊之間的耦合度。牛奶廠家把各個品牌的牛奶發貨到銷售牛奶的店面,然後通過消費者的訂購信息(牛奶品牌,住宅地址),把牛奶傳遞到我們“消費者”的手中。
在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
}
通知方法的優點是分離了生產者和消費者之間的聯系,但正是這樣,往往事情太過於絕對也不好,就像這,一點聯系都沒的話就容易導致代碼的可讀性差,通知多得時候,閱讀起來可能很復雜,沒有思路。