引用:《 objective-c程式設計之道 ios設計模式解析》
責任鏈模式:使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間發生耦合。此模式將這些物件連成一條鏈,從而沿著這條鏈傳遞請求,直到有乙個物件處理它為止。責任鏈主要思想:很多物件引用了同一型別的另乙個物件,形成了一條鏈。鏈中每個物件實現了同樣的方法,處理對鏈中第乙個物件發起的請求。如果乙個物件不知道如何處理請求,它就把請求傳給下乙個響應器(successor)。
何時使用:
舉例:
小結:#pragma 責任鏈
typedef ns_enum(nsinteger,requesttype)
;@inte***ce requestdemo :nsobject
@property(nonatomic,assign) requesttype type;
@end
@implementation requestdemo
@synthesize type;
@end
@inte***ce basechainhandler:nsobject
-(void)handlerequest:(requestdemo *)request;
@end
@implementation basechainhandler
-(void)handlerequest:(requestdemo *)request
@end
@inte***ce chainhandler_1:basechainhandler
@property(nonatomic,strong) __kindof basechainhandler *next;
@end
@implementation chainhandler_1
@synthesize next;
-(void)handlerequest:(requestdemo *)request
else
}@end
@inte***ce chainhandler_2:basechainhandler
@property(nonatomic,strong) __kindof basechainhandler *next;
@end
@implementation chainhandler_2
@synthesize next;
-(void)handlerequest:(requestdemo *)request
else
}@end
@inte***ce chainhandler_3:basechainhandler
@property(nonatomic,strong) __kindof basechainhandler *next;
@end
@implementation chainhandler_3
@synthesize next;
-(void)handlerequest:(requestdemo *)request
else
}@end
//測試:
requestdemo *requettest=[[requestdemo alloc]init];
requettest.type=type1;
//chain
basechainhandler *basec=[basechainhandler new];
chainhandler_1 *handler1=[chainhandler_1 new];
handler1.next=basec;
chainhandler_2 *handler2=[chainhandler_2 new];
handler2.next=handler1;
chainhandler_3 *handler3=[chainhandler_3 new];
handler3.next=handler2;
[handler3 handlerequest:requettest];
//結果:
2019-05-03 10:19:36.426527+0800 block[78391:8269889] 處理型別為1的請求
責任鏈中響應器負責處理單一功能,方便新增、刪除等後期維護,避免單個類**臃腫不方便維護。
設計模式 責任鏈
使用情況描述 某人向銀行借錢 借1w一下一般櫃員就可以解決,借2w一下一般經理就能解決,如果借更多就需要主管才能解決。這就是乙個責任鏈,根據條件的不同,分別進行複雜的邏輯運算。if,switch都可以進行這樣的操作,但是需要在每一層進行一次複雜的操作。責任鏈模式是一種物件的行為模式。在責任鏈模式裡,...
責任鏈設計模式
責任鏈的應用場景 簡單使用責任鏈模式拆分 servlet api 中的過濾器 模擬servlet中的request物件 desc模擬 servlet 中的 request 物件 模擬servlet中的response物件 desc模擬 servlet 中的 response 物件 過濾器抽象層 de...
責任鏈設計模式
責任鏈模式 responsibility pattern 是行為型設計模式之一。這種模型結構有點類似現實生活中鐵鍊,由乙個個鐵環首尾相接構成一條鏈,如果這種結構用在程式設計領域,則每個節點可以看做乙個物件,每個物件有不同的處理邏輯,將乙個請求從鏈的首端發出,沿著鏈的路徑依次傳遞每個節點物件,直到有物...