所以,我正在开发一个需要本地数据库连接的应用程序,并使用一些Web服务来回发送和接收数据。
每当我需要和数据库操作时,我就创建了一个对象
DbConnection
class (这是我用来获取我的类的名称
数据库)并对其执行操作。
同样,为了与互联网连接,我使用DefaultHttpClient
和
创建一个相同的static
对象,并在需要时创建
连接并调用 webservice 我创建HttpResponse
对象
并获得响应数据。
1)我使用正确的方法或模式吗?
2)另外还有一点关注第2点,静态和单例的工作方式是否相同?
答案 0 :(得分:4)
我使用正确的方法或模式吗?
我不这么认为。如果对连接使用单例(或静态),那么如果需要在可能需要多个连接的上下文中使用/重用代码,则会使其变得困难;例如如果您的应用程序是多线程的,或将其转换为库。
单身人士在可测试性方面也存在问题......
一般来说,你可以用单身人士(或静态)做任何事情,你也可以使用某种上下文参数。依赖注入(DI)框架提供了一种创建共享对象的简洁方法,并将它们“连接”到需要它们的其他对象中......而不使用单例或静态。或者,您可以通过各种方式手动完成。
静态和单例是否以相同的方式工作?
单身人士是一种设计模式。静态是Java语言功能,可用于实现Singleton模式。所以它们不是同一个东西(甚至是同样的类似的东西),但它们是相关的。
答案 1 :(得分:1)
没有单身人士总是坏人。除非你被迫使用它们,否则要避免使用它们(因为某些愚蠢的框架不会给你任何其他选择)
要么你传递一些物体,要么你面对上述问题加上我可能忘了提及。为什么2013年仍然存在这些平凡的问题超出了我的范围。
答案 2 :(得分:0)
哇。你的问题还有很多比你想象的要多,但是为了给你简短的答案,我见过的大多数项目(不使用ORM,你可能想要研究的东西)都会有一个包装的课程。围绕调用所有适当查询的DB对象,处理转义& c。它将实现一个公共接口,以便工厂类可以将其提供给期望匹配接口的东西。
至于Singleton / static,那真的取决于你的需要。在我上面提到的模式中,Singleton会更优越:它意味着访问数据库的每个对象都能够存储对db对象的本地引用。这也意味着您可以封装在父类中获取Singleton的过程。使用静态类将无法为您提供该选项。
答案 3 :(得分:0)
回答第1点 - 是单身是正确的做法。理想情况下,您必须只建立与数据库的单一连接。辛尔顿将帮助你实现这一目标。
对第2点的回答 - 没有静态不一定与单身人士一样。如果我们多次调用以单例模式创建对象,它将返回相同的对象。但是,如果多次调用create对象,则可以多次创建静态对象。
但是你可以确保静态对象只创建一次,然后与单例模式相同。