[다크호스 프로그래머] [OC] 프 록 시 디자인 모델.

2930 단어 Objective-C
--- 자바 교육, 안 드 로 이 드 교육, iOS 교육,. Net 교육 은 당신 과 교류 하 기 를 기대 합 니 다! ---
1. 무슨 일 대리 모드?
대리 모델 은 oc 에서 자주 만 나 는 디자인 모델 인 데 대리 모델 이 무엇 입 니까?예 를 들 어 한 사람 이 영 화 를 보고 싶 어 했 지만 영화 표를 살 시간 이 없 었 다. 그래서 그 는 한 암표상 에 게 자신 이 표를 사 는 것 을 도와 달라 고 부탁 했다. 그래서 이 사람과 암표상 간 에 협 의 를 체결 했다. 협의 에 암표상 이 무엇 을 해 야 하 는 지 (표 값 을 물 어보 고 표 의 나머지 장 수 를 물 어보 세 요) 라 고 적 혀 있 었 고 암표상 은 바로 이 대리인 이 었 다.즉, 이 사람과 암표상 간 에 협의 가 있 는데 암표상 이 이 협 의 를 지 켰 기 때문에 암표상 은 이 협의 중의 조항 (표 값 을 묻 고 표 의 나머지 장 수 를 묻 는 것) 을 실현 하여 대리인 이 되 어야 한다.
2. 설계 원리
어떤 번 거 로 운 일 들 은 자신 이 직접 하고 싶 지 않 으 면 누 군가 에 게 도움 을 청 할 수 있다. 즉, 대리 대상 에 게 맡 기 는 것 이다.
 
3. 설계 원칙
1 > 우선 프 록 시 대상 속성 을 가 져 야 합 니 다.
2 > 그 다음 에 대리 가 어떤 방법 이 있 는 지 잘 알 아야 한다.
3 > 마지막 으로 결합 을 풀 수 있 도록
 
4. 실현 방안
1 > 프로 토 콜 을 정의 합 니 다. 에이전트 와 소통 하 는 방법 을 설명 합 니 다.
2 > 프 록 시 속성 id 가 있 음 delegate
3 > 에이전트 가 protocol 을 준수 하도록 합 니 다.
1. TicketDelegate. h (사람과 암표상 간 에 협 의 된 협의)
#import 

//         
@protocol TicketDelegate 

//     
- (double) ticketPrice;

//       
- (int) leftTicketsNumber;

@end

2. Agent. h (암표상 에 게 이 협 의 를 준수 하 게 함)
#import 
#import "TicketDelegate.h"

@interface Agent : NSObject 

@end

3. agent. m (구체 적 인 표 구 매 조작 은 암표상 에 의 해 이 루어 진다)
#import "Agent.h"

@implementation Agent

//      
- (int)leftTicketsNumber
{
    // ...       \     
    
    return 1;
}

//        
- (double)ticketPrice
{
    // ...       \     
    return 1000;
}
@end

4. Person. h (에이전트 속성 을 가지 게 하고 에이전트 가 TicketDelegate 협 의 를 준수 하도록 합 니 다)
#import 
#import "TicketDelegate.h"

@interface Person : NSObject

- (void) buyTicket;

//         
// id         
//      TicketDelegate  
@property (nonatomic, retain) id delegate;

@end

5. Person. m (대리 에 게 자신 을 도와 표를 사도 록 하 세 요: 표 값 을 물 어보 고 표 의 나머지 장 수 를 물 어보 세 요)
#import "Person.h"

@implementation Person

//     
- (void)buyTicket
{
    //          (      、          )
    double price = [_delegate ticketPrice];
    int number =  [_delegate leftTicketsNumber];
    
    NSLog(@"       ,  =%f,  %d  ", price, number);
}

- (void)dealloc
{
    [_delegate release];
    [super dealloc];
}
@end

6. main. m (각각 사람과 암표상 류 를 만 들 고 암표상 에 게 표를 사 게 한다)
#import 
#import "Person.h"
#import "Agent.h"
#import "NextAgent.h"

int main(int argc, const char * argv[])
{
    //  
    Person *p = [[Person alloc] init];
    //    
    Agent *a = [[Agent alloc] init];
    
    //       
    p.delegate = a;
    
    //       
    [p buyTicket];
    
    [a release];
    [p release];
    return 0;
}

좋은 웹페이지 즐겨찾기