如何在工厂模式创建单例
时间: 2023-08-11 20:10:51 浏览: 56
在工厂模式中创建单例可以使用一种称为“登记式/注册式单例”的设计模式。该模式的核心思想是在工厂类中维护一个注册表,记录已经创建的单例实例,从而保证每个单例只被创建一次。
下面是示例代码:
```
public class SingletonFactory {
private static Map<String, Object> singletonInstances = new HashMap<>();
public static synchronized <T> T getSingletonInstance(Class<T> clazz) throws Exception {
String key = clazz.getName();
T instance = (T) singletonInstances.get(key);
if (instance == null) {
instance = clazz.newInstance();
singletonInstances.put(key, instance);
}
return instance;
}
}
```
在上述代码中,我们维护了一个 Map 类型的 singletonInstances 变量,用于存储已经创建的单例实例。在 getSingletonInstance 方法中,我们首先根据传入的 Class 参数获取该类的名称作为键值,然后从 singletonInstances 中查找是否已经创建了该类的单例实例。如果已经创建,则直接返回该实例;否则,创建一个新的实例,并将其添加到 singletonInstances 中。最后,返回该实例即可。
需要注意的是,上述代码仅提供了一个简单的示例,实际应用中要根据具体的业务需求进行修改和完善。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)