У меня есть ситуация, когда у меня есть несколько слоев вложенных объектов в приложении на основе документов, которые должны знать информацию об определенной модели.
В частности, у меня есть 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
Модель передается из Controller-> MyLayoutManager-> MyTypesetter. Это кажется немного избыточным, возможно, слишком тесно связанным.
Будет ли модель делегата лучше? Если так, каков наилучший способ настроить это? У Typesetter нет делегата, но у LayoutManager он уже есть. Следует ли добавить делегата в Typesetter, а затем переопределить делегат в LayoutManager? Или лучше придерживаться передачи интерфейса моей модели?
Любое понимание будет оценено. Спасибо.