특정 모델에 대한 정보를 알아야하는 문서 기반 응용 프로그램에 여러 계층의 중첩 된 개체가있는 상황이 있습니다.개체에 인터페이스를 전달하거나 Cocoa에서 위임을 사용하고 있습니까?
특히 NSTextView, NSLayoutManager 및 NSTypesetter가 있습니다. 각 모델은 올바르게 렌더링하려면 내 문서 모델에 대한 특정 속성을 알아야합니다.
현재 각 클래스를 서브 클래 싱하고 모델에 대한 참조가있는 속성이 있습니다. 참조는 서브 클래스 NSLayoutManager에, 내 문서 컨트롤러에서 아래로 통과 한 다음 서브 클래스 NSTypesetter에 넘겨된다
@implementation MyLayoutManager : NSLayoutManager {
@private
MyModel *model;
}
@property (retain) MyModel *model;
-(id)initWithModel:(MyModel *)model;
@end
@implementation MyTypesetter : NSATSTypesetter {
@private
MyModel *model;
}
@property (retain) MyModel *model;
-(id)initWithModel:(MyModel *)model;
@end
모델은 컨트롤러 -> MyLayoutManager-> MyTypesetter에서 전달됩니다. 이것은 조금 중복 된 것으로 보이고 아마도 너무 단단히 결합 된 것 같습니다.
대리인 패턴이 더 좋을까요? 그렇다면 설정하는 가장 좋은 방법은 무엇입니까? Typesetter에는 대리자가 없지만 LayoutManager에 이미 대리자가 있습니다. Typesetter에 대리자를 추가하고 LayoutManager에서 대리자를 재정의해야합니까? 또는 내 모델의 인터페이스를 전달하는 것이 더 좋습니다.
어떤 통찰력도 인정 될 것입니다. 감사.
동의. 필자는 컨트롤러에 뷰에 필요한 데이터를 요청하는 대리자 메서드를 설정하기 만했습니다. – Donald