gpt4 book ai didi

java - Java 中多个请求共享同一实例(OOP)

转载 作者:行者123 更新时间:2023-12-02 04:31:53 24 4
gpt4 key购买 nike

我有一个类,其单个实例需要被 Java 中的多个类使用。我找到了两个相同的解决方案:1.将实例作为方法参数传递2.使用静态工厂

我的问题是,如果我使用静态工厂,当我使用静态方法时如何区分传入的请求。我想避免第一个解决方案,因为有许多类将使用此实例。另外,如果不是上面提到的,请推荐最好的设计。

代码示例:

 class MyClass{


Map<String, List<String>> myMap=new ConcurrentHashMap();

public static void addToMap(String key, String value){
if(myMap.containsKey(key)){
List<String> stringList=myMap.get(key);
stringList.add(value);
}
else{
myMap.put(key,value);
}
}
}

我想在程序执行时在很多地方执行此添加方法,例如:

方法addEmployee():

if(employeeName==null){
MyClass.addToMap("ER101", "Name Error");
}
Method insertInDB():
catch(SQLException e){
MyClass.addToMap("SQL", "Error Occurred in DB Operation");
}

谢谢

最佳答案

有多种方法可以使同一个类的实例可供不同的调用者使用,例如线程或请求。

您可以做的最简单的事情之一就是创建一个单例,如上所示。单例的问题在于它们只能有一个,因为它们通常被设置为强制存在它们的单个实例。

更好的是创建您的实例,并将其传递给需要它的事物。如果您正在创建 Web 应用程序或类似应用程序,则可以使用依赖注入(inject)框架(例如 SpringFramework)来实现此目的。

在需要的地方注入(inject)实例意味着可以更轻松地用虚拟实例替换该实例以进行测试,并且在测试过程中,您将能够创建以不同方式配置的此类的许多实例来进行测试。

关于java - Java 中多个请求共享同一实例(OOP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31348305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com