首先需要乙個需要裝飾的類object:
@inte***ce object : nsobject
- (void)doonething;
- (void)dootherthing;
@end
@implementation object
- (void)doonething
- (void)dootherthing
@end
然後需要類object的裝飾抽象類,其他具體的裝飾實現類都要繼承自這個裝飾抽象類:
@inte***ce objectabstractdecorator : object
- (id)initwithobject:(object *)obj;
@end
@inte***ce objectabstractdecorator ()
@end
@implementation objectabstractdecorator
- (id)initwithobject:(object *)obj
return self;
}- (void)doonething
- (void)dootherthing
@end
然後是裝飾實現類,
@inte***ce doonethingdecorator : objectabstractdecorator
@end
@implementation doonethingdecorator
- (void)doonething
@end
@inte***ce dootherthingdecorator : objectabstractdecorator
@end
@implementation dootherthingdecorator
- (void)dootherthing
@end
在客戶端那邊呼叫,最終產生乙個經過裝飾object。
int main(int argc, const char * argv)
return 0;
}
通過裝飾模式對乙個object進行多次裝飾的組合可以很好的避免object的子類迅速膨脹的問題(避免每乙個裝飾的組合都需要乙個object的子類)。
iOS開發 裝飾模式
裝飾模式是指在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。裝飾模式中的 裝飾物件和真實物件有相同的介面。這樣客戶端物件就能以和真實物件相同的方式和裝飾物件互動,同時裝飾物件包含乙個真實物件的引用 reference 裝飾物件接受...
ios設計模式 裝飾模式 decorator
適用場景,對不可修改的類進行擴充套件,比如說靜態庫 或系統的類等 使用思路 1.先模擬出乙個被裝飾 類 功能一樣的類 2.建立 模擬類 的子類,對子類進行擴充套件。原物件 import inte ce gamepad nsobject 上下左右操作 void up void down void le...
設計模式 裝飾模式的C 實現
這是bwar在2009年寫的設計模式c 實現,均可編譯可執行,一直存在自己的電腦裡,曾經在團隊技術分享中分享過,現搬到線上來。1.1 目的 動態地給乙個物件新增一些額外的職責。1.2 適用性 1 在不影響其他物件的情況下,以動態 透明的方式給單個物件新增職責。2 處理那些可以取消的職責。3 不能或不...