我有一种情况,我在基于文档的应用程序中有多层嵌套对象,需要了解有关某个模型的信息。
具体来说,我有一个 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 上的委托?还是坚持传递我的模型界面会更好?
任何见解将不胜感激。谢谢。