我有一種情況,在基於文檔的應用程序中需要知道某個模型的信息時,我有幾層嵌套對象。將接口傳遞給對象,或在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通過。這似乎有點多餘,可能過於緊密。
委託模式會更好嗎?如果是這樣,那麼最好的方法是什麼?排版工具沒有委託,但LayoutManager已經有一個。應該將一個委託添加到Typesetter,然後重寫LayoutManager上的委託?或者更好地堅持傳遞我的模型界面?
任何有識之士將不勝感激。謝謝。
同意。我最終設置了委託方法,它們只是向控制器詢問我需要的數據。 – Donald 2010-11-22 00:45:58