Strategy pattern을 Objective-C 로 만들어봤습니다.
Head First Design Patterns : 스토리가 있는 패턴 학습법을 읽고, 한번 만들어 봤습니다. 다음 글을 보고, 책에 있는 자바로 만들어진 오리로 만들어 봤습니다. 책을 더 참고하시면 더 확장하실 수 있습니다. 참고로 저는 아직까지 50, 52, 64 번째 줄이 정확히 이해가 안 됩니다. ^^;
How to create a strategy pattern in Objective-C?
//
// main.m
// testing
//
// Created by Jaehwan on 11. 2. 9..
// Copyright 2011 Wireless Air. All rights reserved.
//
#import
@protocol FlyBehavior
@required
– (void) fly;
@end
@interface FlyWithWings : NSObject
{
// ivars for A
}
@end
@implementation FlyWithWings
– (void) fly
{
NSLog(@"Fly With Wings!");
}
@end
@interface FlyNoWay : NSObject
{
// ivars for A
}
@end
@implementation FlyNoWay
– (void) fly
{
NSLog(@"Fly No Way!");
}
@end
@interface Duck : NSObject
{
id flyBehavior;
}
@property (assign) id flyBehavior;
– (void) fly;
@end
@implementation Duck
@synthesize flyBehavior;
– (void) fly
{
[flyBehavior fly];
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// insert code here…
NSLog(@"Hello, World!");
FlyWithWings * flyWithWings = [[[FlyWithWings alloc] init] autorelease];
FlyNoWay * flyNoWay = [[[FlyNoWay alloc] init] autorelease];
Duck * context = [[[Duck alloc] init] autorelease];
[context setFlyBehavior:flyWithWings];
[context fly];
[context setFlyBehavior:flyNoWay];
[context fly];
[pool drain];
return 0;
}