ios設計模式 裝飾模式 decorator

2021-07-08 12:46:44 字數 1854 閱讀 3837

適用場景,對不可修改的類進行擴充套件,比如說靜態庫 或系統的類等

使用思路: 1.先模擬出乙個被裝飾 類 功能一樣的類 2.建立 模擬類 的子類,對子類進行擴充套件。

**原物件

#import

@inte***ce gamepad : nsobject

/***  上下左右操作

*/-(void)up;

-(void)down;

-(void)left;

-(void)right;

/***  選擇與開始

*/-(void)select;

-(void)start;

/***  按鈕abxy

*/-(void)comanda;

-(void)comandb;

-(void)comandx;

-(void)comandy;

建立出乙個和原物件一樣的類 然後建立乙個原物件 在同名方法中 呼叫 原物件的同名方法

#import

#import "gamepad.h"

@inte***ce gamepaddecorator : nsobject

/***  上下左右操作

*/-(void)up;

-(void)down;

-(void)left;

-(void)right;

/***  選擇與開始

*/-(void)select;

-(void)start;

/***  按鈕abxy

*/-(void)comanda;

-(void)comandb;

-(void)comandx;

-(void)comandy;

#import "gamepaddecorator.h"

@inte***ce gamepaddecorator ()

@property(nonatomic,strong)gamepad *gamepad;

@end

@implementation gamepaddecorator

-(id)init

return self;

}-(void)up

-(void)down

-(void)left

-(void)right

-(void)select

-(void)start

-(void)comanda

-(void)comandb

-(void)comandx

-(void)comandy

3.對模擬出來的類進行子類化 並擴充套件新功能

#import "gamepaddecorator.h"

@inte***ce cheatgamepaddecorator : gamepaddecorator

-(void)cheat;

實現略ios中的擴充套件 類別

在類別中擴充套件屬性 這裡用到了 runtime

注意:在類別中千萬別重寫原有的方法,不然不管你引用沒引用,都會執行你重寫後的方法

#import "gamepad.h"

@inte***ce gamepad (coin)

@property(nonatomic,assign)nsuinteger coins;

#import "gamepad+coin.h"

#import

#import

@implementation gamepad (coin)

static  const nsstring *_coinstr=@"_coinstr";

-(void)setcoins:(nsuinteger)coins

-(nsuinteger)coins

設計模式 裝飾模式

裝飾模式,動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。m 超級瑪麗 普通繼承模式實現 a 發鏢 能組合出七種功能 m1 a m4 a b b 變身 m2 b m5 a c c 無敵 m3 c m6 b c m7 a b m m1 a b 組合方法 new m2 m...

設計模式 裝飾模式

剛看了看設計模式,真是費了好多的腦細胞。想著想著就到了食堂。o o哈!正是長身體的時候 大神勿噴 一定要多吃點。於是我打了乙份公尺飯,然後又端著盛公尺飯的盤子買了乙份菜 看著還不是很夠,就又端著這個盤子買了一條最愛吃的魚。裝飾模式!五一要來了。回家轉轉,沒有小外甥的玩具怎麼行。於是我去超市,推著購物...

設計模式 裝飾模式

複習設計模式 裝飾模式 裝飾模式 在不修改已經存在的類的情況下,動態的新增新的功能,實現即插即用,開放關閉原則 public inte ce man public class batman implements man override public void killmonster public ...