我有一個名爲IProjectUser的接口,它定義了讀取和寫入項目文件的讀取函數和寫入函數。我也有一個名爲Project的類,它包含一個IProjectUser對象的通用列表來管理項目文件。這兩個都在類庫Project.dll中。類庫中的可選接口
我也有叫A.DLL一個類庫,它包含一個名爲Foo類,它實現IProjectUser。讀取/寫入項目文件的能力次於此類。它擁有並操縱一些數據。 A.dll引用Project.dll。
該應用程序還包含實現IProjectUser某些形式和其他類。
我能想象在未來,我可能要在另一個項目中不使用項目文件使用A.DLL的情況。但是,我會被迫僅僅因爲A.dll需要包含Project.dll。即使功能是可選的。
是否有不同的設計模式,讓我基本上做一個接口可選?
我希望我解釋這顯然不夠。
更新
約鑄造對象的接口是什麼?這會打開接口未正確實現的可能性。對於這類問題,這是一種好還是壞的設計方法?
if (Foo is IProjectUser) {
ProjectUsers.Add(Foo as IProjectUser);
// etc
}
你爲什麼不把這個A.dll分割成單個責任的多少個類? – 2010-09-16 22:52:20
Foo擁有和操縱數據。我希望可以選擇將此對象的狀態保存/加載到項目文件中。我將如何分割?我已經分離出了保存和加載到Project.dll的代碼。 – Andy 2010-09-16 22:58:17