Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用工厂方法创建单例类_Java_Oop_Design Patterns_Singleton - Fatal编程技术网

Java 使用工厂方法创建单例类

Java 使用工厂方法创建单例类,java,oop,design-patterns,singleton,Java,Oop,Design Patterns,Singleton,我的singleton类实现了一个接口,在将来我可以期望得到许多具体的实现。 我正在考虑通过工厂方法创建这个类的一个实例。工厂方法可能被重载。 我的问题是这个主意是好是坏?根据你最新的评论,你肯定能做到。工厂方法根据重载的参数或参数中的枚举/整数值提供持久性类的单例实现。有很多框架都使用这种模式,比如说给你一个基于不同协议与服务器通信的客户端实例 MyFactory.pbClient("host", port); MyFactory.httpClient("host", port); 根据你的

我的singleton类实现了一个接口,在将来我可以期望得到许多具体的实现。 我正在考虑通过工厂方法创建这个类的一个实例。工厂方法可能被重载。
我的问题是这个主意是好是坏?

根据你最新的评论,你肯定能做到。工厂方法根据重载的参数或参数中的枚举/整数值提供持久性类的单例实现。有很多框架都使用这种模式,比如说给你一个基于不同协议与服务器通信的客户端实例

MyFactory.pbClient("host", port);
MyFactory.httpClient("host", port);

根据你的最新评论,你一定能做到。工厂方法根据重载的参数或参数中的枚举/整数值提供持久性类的单例实现。有很多框架都使用这种模式,比如说给你一个基于不同协议与服务器通信的客户端实例

MyFactory.pbClient("host", port);
MyFactory.httpClient("host", port);

如果从factory方法返回的实例是单例,则这与此无关。这是一种实现选择——做适合您需要的事情


另外,如果您的方法签名返回一个接口,那么从技术上讲,它是一个方法,而不是一个方法。

如果从您的工厂方法返回的实例是一个单例,则这与此无关。这是一种实现选择——做适合您需要的事情


另外,如果您的方法签名返回一个接口,那么从技术上讲,它是一个方法,而不是一个方法。

这个问题是主观的。你有什么特别的问题/场景吗?@DeepakBala我正在为我的系统编写一个关于持久性机制的抽象。比如说xmlspersistence。我想把这个类的一个引用传递给每个调用子系统。我也知道,将来我可能不得不转移到这个类的另一个实现,但还是单实例的事情这个问题是主观的。你有什么特别的问题/场景吗?@DeepakBala我正在为我的系统编写一个关于持久性机制的抽象。比如说xmlspersistence。我想把这个类的一个引用传递给每个调用子系统。我也知道,将来我可能不得不转移到这个类的另一个实现,但还是单实例的事情保持不变