Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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 singleton方法是否适合访问/维护数据库和internet连接_Java_Design Patterns_Static_Singleton - Fatal编程技术网

Java singleton方法是否适合访问/维护数据库和internet连接

Java singleton方法是否适合访问/维护数据库和internet连接,java,design-patterns,static,singleton,Java,Design Patterns,Static,Singleton,因此,我正在开发一个需要本地数据库连接的应用程序,并使用一些web服务来回发送和接收数据。 每当我需要和数据库操作时,我就会创建一个 DbConnectionclass(这是我用来获取 数据库)并对其执行操作 类似地,我使用DefaultHttpClient和 创建一个相同的静态对象,并在需要时 连接并调用webserviceI创建HttpResponse对象 并获取响应数据 1)我是否使用了正确的方法或模式? 2)还有一件事,关注点2静态和单例的工作方式相同吗? 我是否使用了正确的方法或模

因此,我正在开发一个需要本地数据库连接的应用程序,并使用一些web服务来回发送和接收数据。

  • 每当我需要和数据库操作时,我就会创建一个
    DbConnection
    class(这是我用来获取 数据库)并对其执行操作

  • 类似地,我使用
    DefaultHttpClient
    和 创建一个相同的
    静态
    对象,并在需要时 连接并调用webserviceI创建
    HttpResponse
    对象 并获取响应数据

1)我是否使用了正确的方法或模式?

2)还有一件事,关注点2静态和单例的工作方式相同吗?

我是否使用了正确的方法或模式

我不这么认为。如果您使用单例(或静态)连接,那么如果您的代码需要在可能需要多个连接的上下文中使用/重用,则会造成困难;e、 如果你让你的应用程序多线程,或者把它变成一个库

单例在可测试性方面也有问题

一般来说,可以使用单例(或静态)执行的任何操作,也可以使用某种上下文参数执行。依赖注入(DI)框架提供了一种简洁的方法来创建共享对象,并将它们“连接”到其他需要它们的对象中。。。不使用单例或静态。或者,你可以用多种方式手工完成

静态和单例的工作方式相同吗

单身是一种设计模式。静态是可用于实现单例模式的Java语言特性。所以它们不是同一件事(甚至不是同一种事),但它们是相关的

我是否使用了正确的方法或模式

我不这么认为。如果您使用单例(或静态)连接,那么如果您的代码需要在可能需要多个连接的上下文中使用/重用,则会造成困难;e、 如果你让你的应用程序多线程,或者把它变成一个库

单例在可测试性方面也有问题

一般来说,可以使用单例(或静态)执行的任何操作,也可以使用某种上下文参数执行。依赖注入(DI)框架提供了一种简洁的方法来创建共享对象,并将它们“连接”到其他需要它们的对象中。。。不使用单例或静态。或者,你可以用多种方式手工完成

静态和单例的工作方式相同吗


单身是一种设计模式。静态是可用于实现单例模式的Java语言特性。所以他们不是同一件事(甚至不是同一种事),但他们是相关的。

哇。你的问题比你想象的要多得多,但为了给你一个简短的答案,我见过的大多数项目(不使用ORM,这是你可能想研究的东西)都会有一个类,它围绕着DB对象,调用所有适当的查询、处理转义和c。它将实现一个公共接口,这样工厂类就可以为需要匹配接口的对象提供服务


至于单例/静态,这取决于您的需要。在我上面提到的模式中,Singleton要优越得多:它意味着访问数据库的每个对象都能够存储对db对象的本地引用。这还意味着您可以在父类中封装获取单例的过程。使用静态类不能提供这种选择。

哇。你的问题比你想象的要多得多,但为了给你一个简短的答案,我见过的大多数项目(不使用ORM,这是你可能想研究的东西)都会有一个类,它围绕着DB对象,调用所有适当的查询、处理转义和c。它将实现一个公共接口,这样工厂类就可以为需要匹配接口的对象提供服务


至于单例/静态,这取决于您的需要。在我上面提到的模式中,Singleton要优越得多:它意味着访问数据库的每个对象都能够存储对db对象的本地引用。这还意味着您可以在父类中封装获取单例的过程。使用静态类不能提供这种选择。

回答第1点-是的,单例是正确的方法。理想情况下,您必须只建立到数据库的单一连接。Sinleton将帮助您实现这一目标

回答第2点-无静态不一定像单例一样工作。如果我们多次调用以单例模式创建对象,它将返回相同的对象。但如果多次调用create object,则可以多次创建静态对象


但是您可以确保静态对象只创建一次,这将与单例模式相同。

回答第1点-是的,单例是正确的方法。理想情况下,您必须只建立到数据库的单一连接。Sinleton将帮助您实现这一目标

回答第2点-无静态不一定像单例一样工作。如果我们多次调用以单例模式创建对象,它将返回相同的对象。但如果多次调用create object,则可以多次创建静态对象


但您可以确保静态对象只创建一次,这将与单例模式相同。

没有单例总是不好的。除非您被迫使用它们,否则请避免使用它们(因为某些愚蠢的框架不会给您其他选择)

  • 他们制造