Language agnostic 如果工厂返回的对象是静态的,它仍然被视为工厂吗?
当我的应用程序启动时,它需要根据用户登录的内容获取正确DAL类的实例(目前有4个)。某些用户正在从某些数据库中删除 如果我不实例化那些DAL类的实例,而是简单地返回它的正确静态实例,那么它仍然被认为是“工厂”模式吗?我不需要不断地创建这些对象,因为所有用户都可以共享它们 伪代码:Language agnostic 如果工厂返回的对象是静态的,它仍然被视为工厂吗?,language-agnostic,design-patterns,factory,Language Agnostic,Design Patterns,Factory,当我的应用程序启动时,它需要根据用户登录的内容获取正确DAL类的实例(目前有4个)。某些用户正在从某些数据库中删除 如果我不实例化那些DAL类的实例,而是简单地返回它的正确静态实例,那么它仍然被认为是“工厂”模式吗?我不需要不断地创建这些对象,因为所有用户都可以共享它们 伪代码: public class RepositoryFactory { public static IRepository repoA = new FranksLumberRepo(); public sta
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;
}
}
}
实际上,这是一种“抽象工厂”模式。工厂模式本质上是一种抽象(在术语的一般意义上)。即使您返回静态对象,您仍然在添加抽象层,这是很好的,一般来说应该被视为工厂模式的一部分。这将是一个单例工厂。对您的术语稍加澄清。对象不是静态的,只是引用。对象是至少有一个静态引用的实例。当您返回对象时,您返回的只是对该对象的引用。它不知道有一个静电把它固定在其他地方
但是是的,这是一种有效的工厂模式 这是一个很好的例子,说明了何时可以使用抽象工厂模式。在阅读了关于抽象工厂模式的Wikipedias页面后,抽象工厂似乎被用来返回子工厂本身,然后可以用来实例化对象。上面的代码不是这样的,对吗?示例中没有AbstractFactory。抽象的东西在哪里,混凝土工厂在哪里?