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...