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

标签 java oop design-patterns

我有一个类,其单个实例需要被 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/

相关文章:

java - 编程模式 - 示例研究

design-patterns - 哪些设计模式可以提高性能?

java - JPA实体持续不保存到数据库

Java JUnit : Reset SSLContext in JUnit Test

python - 了解应该绑定(bind)到对象实例的类范围变量

c - C 中参数数量可变的函数和面向设计的问题

java - 在 Azure API 应用服务上部署 JAX-RS Java API Webapp

java - 解析 Json 数据给出 ClassCastException

c++ - 从程序集中调用的 C++ 方法返回对象数据

java - 如何使用不同包中的方法?