'카테고리 패턴'에 해당되는 글 1건

  1. 2010.06.06 카테고리 기법
Objc에서는 특별한 패턴을 제공한다. 물론 자바나 AS3에서는 이보다 좋은 패턴을 구사할 수 있기 때문에 이러한 개념은 자주 사용되지 않지만 물론 나도 카테고리 기법보다는 프로토콜 기법을 선호한다. 뭔가 코드를 땜빵하는 느낌이 강해서 별로 맘에 들지는 않지만 카테고리 기법을 사용하며 코드를 보다 유연하게 만들 수 있다. 
카테고리기법은 간단히 말하자면 구현파일에 별도의 interface를 설정하여 메서드를 확장하는 것이다. 즉 기본적으로 구현해야만 하는 인터페이스 외에 추가로 구현하고자 하는 메서드를 선언하여 확장한다.

카테고리 선언 구조는  @interface 파일명(카테고리명)과 같은 형태로 선언한다.

#import "MyCategory.h"



///////////////// 구현 부분 : 실제 클래스 구현

@implementation MyCategory

@synthesize num01, num02;

@synthesize str01, str02;


//이것은 인터페이스에서 설정한 인스턴스 메서드

-(void)print

{


}


@end


////////////////// 카테고리 설정 : print 관하여 특화된 카테고리

@interface MyCategory (printMethods)

-(void) printNum01;

-(void) printNum02;

-(void) printStr01;

-(void) printStr02;

-(void) printNums;

-(void) printStrs;

@end



//////////////// 카테고리 메서드 구현

@implementation MyCategory(printMethods)


-(void) printNum01

{

NSLog(@"%i", num01);

}


-(void) printNum02

{

NSLog(@"%i", num02);

}


-(void) printStr01

{

NSLog(@"%@", str01);

}


-(void) printStr02

{

NSLog(@"%@", str02);

}


-(void) printNums

{

NSLog(@"%i, %i", num01, num02);

}


-(void) printStrs

{

NSLog(@"%@, %@", str01, str02);

}


@end


위처럼 구현파일 안에 별도의 interface와 implementation 영역을 확장하여 메서드를 구현한다.
Posted by 버터백통