之前自己敲**的時候沒有特別注意到需要使用什麼樣的設計模式,敲的**多了開始想對設計模式有所了解了。於是,在某網上買了本大話設計模式,自己翻著看了。用oc來實現書中的一些設計模式。也算是對 設計模式的一種加深認識吧。話不多說,上**:
-------工程採用的是mrc模式 ------------ (~ o ~)~zz
#import
//採用
get set
方法初始化
引數這個是工廠的運算類的基類
.h@inte***ce
operation :
nsobject
- (void
)setnumbera:(
nsinteger
)numbera;
- (void
)setnumberb:(
nsinteger
)numberb;
- (nsinteger
)getnumbera;
- (nsinteger
)getnumberb;
- (nsinteger
)getresult;
@end
.m#import
"operation.h"
@implementation
operation
- (void
)setnumbera:(
nsinteger
)numbera
}- (
void
)setnumberb:(
nsinteger
)numberb
}- (
nsinteger
)getnumbera
- (nsinteger
)getnumberb
- (nsinteger
)getresult
@end
//加法運算 .m
#import
"add.h"
@implementation
add- (
nsinteger
)getresult
@end
//減法運算 .m
#import
"sub.h"
@implementation
sub
- (nsinteger
)getresult
@end
//乘法運算.m
#import
"mul.h"
@implementation
mul- (
nsinteger
)getresult
@end
//除法運算 .m
#import
"div.h"
@implementation
div- (
nsinteger
)getresult
else
return
result;
}@end
好了我們的基類和功能類已經建好了。下面該使用我們的工廠模式了。 .h
//工廠類根據需要建立出所需要的運算類
#import
@class
operation
;@inte***ce
operationfactory :
nsobject
+ (operation
*)createoperate:(
nsstring
*)operate;
@end
.m#import
"operationfactory.h"
#import
"operation.h"
#import
"add.h"
#import
"sub.h"
#import
"mul.h"
#import
"div.h"
@implementation
operationfactory
+ (operation
*)createoperate:(
nsstring
*)operate
else
if([operate
isequaltostring
:@"-"
]) else
if([operate
isequaltostring
:@"*"
]) else
if([operate
isequaltostring
:@"/"
])switch
(i)
return
oper;
}@end
//我們的工廠也建好了。萬事俱備只欠使用了。 下面在controller 裡操作。
看**: .m
#import
"viewcontroller.h"
#import
"operation.h"
#import
"operationfactory.h"
@inte***ce
viewcontroller
()@property
(nonatomic
,retain
)operation
*oper;
@property
(retain
,nonatomic
)iboutlet
uitextfield
*numbera;
@property
(retain
,nonatomic
)iboutlet
uitextfield
*operation;
@property
(retain
,nonatomic
)iboutlet
uitextfield
*numberb;
@property
(retain
,nonatomic
)iboutlet
uilabel
*results;
@end
@implementation
viewcontroller
- (void
)viewdidload
- (ibaction
)buttonpressaction:(
id)sender
if([
_operation
.text
isequaltostring
:@"+"
]||[
_operation
.text
isequaltostring
:@"-"
]||[
_operation
.text
isequaltostring
:@"*"
]||[
_operation
.text
isequaltostring
:@"/"
])
else}
- (void
)didreceivememorywarning
- (void
)dealloc
@end
總結:這樣的話只要輸入運算符號,工廠就會例項化出合適的物件。通過多型返回父類的方法實現簡單的計算機的結果哦。
大話設計模式(一)
物件導向設計四大原則 單一原則 乙個類應該只有乙個引起它變化的原因。如果乙個類擔任的職責過多,就等於把這些職責耦合在一起,一旦乙個職責發生改變,很可能會削弱或者抑制其他職責的能力,即要求耦合度盡可能低。開放 關閉原則 對擴充套件開發,對修改關閉。在乙個軟體開發中,常常需要擴充套件專案,我們應該盡可能...
大話設計模式筆記一
在正式開始學習前,需要先複習一下類圖的相關知識。因為在設計模式中大量使用類圖來表達乙個設計模式的結構。類圖複習 首先我們看到了乙個矩形框,他代表乙個類。類圖分為三層,第一層表示類的名稱,如果是抽象類則用斜體表示。第二層是類的特性,通常包括欄位和屬性。第三層是類的操作,通常是方法或行為。表示 publ...
大話設計模式
大話設計模式 這是乙個中國人寫的書,準確的說是部落格。經常聽到有人說國人寫不出好書,而說的人自己有夢想寫出一些書,那言外之意 有些書,是好書,我們可以好好精細研讀。有些書,寫的不是那麼精彩,我們可以借鑑學習。而能出版的書 一些不常見的出版社除外 總有值得我們去學習的東西。其實熟的好與壞很多時候不在於...