iOS設計模式 觀察者

2021-09-07 01:32:48 字數 3114 閱讀 3584

ios設計模式 - 觀察者

原理圖

1. cocoa框架本身實現了觀察者模式(通知中心以及kvo)

2. 本人所寫的例子,實現了通知中心,其特殊的地方在於,不用移除訂閱了通知的物件原始碼

//

//observerpattern

////

created by youxianming on 15/7/29.

////

#import

#import

"subscriptionservicecenterprotocol.h"/*

* * 訂閱服務中心(實現了系統的通知中心業務邏輯)

* * = 注意 = 沒有考慮傳送通知的時候,同步與非同步的問題 *

*/@inte***ce

subscriptionservicecenter : nsobject/**

* 建立訂閱號

* * @param subscriptionnumber 訂閱號碼 */

+ (void)createsubscriptionnumber:(nsstring *)subscriptionnumber;/**

* 移除訂閱號(參與到該訂閱號碼的所有客戶不會再收到訂閱資訊)

* * @param subscriptionnumber 訂閱號碼 */

+ (void)removesubscriptionnumber:(nsstring *)subscriptionnumber;/**

* 將指定客戶從指定訂閱號上移除掉

* * @param customer 客戶物件

* @param subscriptionnumber 訂閱號碼 */

+ (void)removecustomer:(id

)customer fromsubscriptionnumber:(nsstring *)subscriptionnumber;/**

* 通知簽訂了訂閱號碼的物件

* * @param message 資訊物件

* @param subscriptionnumber 訂閱號碼 */

+ (void)sendmessage:(id)message tosubscriptionnumber:(nsstring *)subscriptionnumber;/**

* 客戶訂閱指定的訂閱號

* * @param customer 客戶物件

* @param subscriptionnumber 訂閱號碼 */

+ (void)addcustomer:(id

)customer withsubscriptionnumber:(nsstring *)subscriptionnumber;

@end

//

//observerpattern

////

created by youxianming on 15/7/29.

////

#import

"subscriptionservicecenter.h

"static nsmutabledictionary *_subscriptionnumberdictionary =nil;

@implementation

subscriptionservicecenter

#pragma mark - 初始化

+ (void

)initialize

}+ (void)createsubscriptionnumber:(nsstring *)subscriptionnumber

}+ (void)removesubscriptionnumber:(nsstring *)subscriptionnumber

}+ (void)removecustomer:(id

)customer fromsubscriptionnumber:(nsstring *)subscriptionnumber

}+ (void)sendmessage:(id)message tosubscriptionnumber:(nsstring *)subscriptionnumber }}

}+ (void)addcustomer:(id)customer withsubscriptionnumber:(nsstring *)subscriptionnumber

#pragma mark - 私有方法

+ (nshashtable *)existsubscriptionnumber:(nsstring *)subscriptionnumber

@end

//

//observerpattern

////

created by youxianming on 15/7/29.

////

#import

@protocol subscriptionservicecenterprotocol /*

* * 接收到的訂閱資訊

* * @param message 訂閱資訊

* @param subscriptionnumber 訂閱編號 */

- (void)subscriptionmessage:(id)message subscriptionnumber:(nsstring *)subscriptionnumber;

@end

分析

讓乙個物件,遵循某種制定的協議(介面)來完成特定的功能,是cocoa開發中很重要的一種技巧

訂閱以及針對訂閱號發布資訊的完整流程

iOS 觀察者設計模式

觀察者模式用於當某件事情發生時去執行某事 當某件事發生的時候,就會通知所有的觀察者 1.首先要新增觀察者 或者稱為監聽者 因為生產者需要維護這乙個所有觀察者的陣列,當某件事情發生時就迴圈這個資料,依次進行對每個觀察者進行通知 2.當某件時發生時就傳送通知 在ios中觀察者模式已經被封裝成了nsnot...

python 設計模式 觀察者 觀察者設計模式

在觀察者設計模式這種模式中,物件被表示為等待事件觸發的觀察者。一旦發生指定的事件,觀察者就會關注該主體。當事件發生時,主體告訴觀察者它已經發生。以下uml圖表示觀察者模式 如何實現觀察者模式?現在讓我們來看看如何實現觀察者模式。參考以下實現 import threading import time ...

IOS設計模式之觀察者模式

觀察者 observer 模式也叫發布訂閱 publish subscribe 模式,是mvc 模型 檢視 控制器 模式的重要組成部分。include usingnamespace std class observer class engine void download private obser...