當我的應用程序啓動時,它需要根據用戶登錄的情況獲取正確DAL類的實例(當前有4個)。某些用戶正在從某些數據庫下拉。如果工廠返回的對象是靜態的,它仍被視爲工廠嗎?
如果不是實例化這些DAL類的實例,而只是返回正確的靜態實例,它仍然被認爲是「工廠」模式嗎?我不需要不斷創建這些對象,因爲所有用戶都可以共享它們。
僞代碼:
public class RepositoryFactory
{
public static IRepository repoA = new FranksLumberRepo();
public static IRepository repoB = new LowesHardwareRepo();
public static IRepository repoC = new HackmansHardwareRepo();
public static IRepository repoD = new TomsHardwareRepo();
public IRepository createRepo(User currentUser)
{
switch(User.Store)
{
case FrankLumber:
return repoA;
case LowesHardware:
return repoB;
case Hackmans:
return repoC;
case TomsHardware:
return repoD;
default:
throw exception;
}
}
}
這是一個很好的例子,你可以使用抽象工廠模式。 – 2009-06-10 03:09:58
在閱讀Abstract Factory Pattern的Wikipedias頁面之後,它看起來像一個Abstract Factory用於返回一個子工廠本身,然後可以用它來實例化對象。上面的代碼並非如此,對吧? – mmcdole 2009-06-10 03:22:46