Java 设计-从何处打开、插入和关闭数据库?

Java 设计-从何处打开、插入和关闭数据库?,java,android,design-patterns,Java,Android,Design Patterns,我需要一些设计建议 以下是我的用户故事: 作为一名用户,我希望将我的工作时间保存到DB中,以便以后进行查看。我希望它是简单的,从主屏幕点击一个按钮 我在我的应用程序中处理这个问题的方式是,从我的主应用程序片段中,当用户单击按钮时,它将调用一个工厂类,该工厂类将为这种类型的工作实例化正确的类(让我们调用-class“X”),并将其返回到主片段进行交互 在类“X”构造函数中,我建立并打开DB连接,在其中一个类方法中,我将新数据插入DB 我的问题是——这是一个好的设计吗?我会有内存泄漏吗?有什么我需要

我需要一些设计建议

以下是我的用户故事:

作为一名用户,我希望将我的工作时间保存到DB中,以便以后进行查看。我希望它是简单的,从主屏幕点击一个按钮

我在我的应用程序中处理这个问题的方式是,从我的主应用程序片段中,当用户单击按钮时,它将调用一个工厂类,该工厂类将为这种类型的工作实例化正确的类(让我们调用-class“X”),并将其返回到主片段进行交互

在类“X”构造函数中,我建立并打开DB连接,在其中一个类方法中,我将新数据插入DB

我的问题是——这是一个好的设计吗?我会有内存泄漏吗?有什么我需要考虑的吗?

我附加了一个类似UML的类流以获得帮助:

 +-----------------+                 +----------------------+
 |MainFragment     |                 |      Factory         |
 |-----------------|                 |----------------------|
 |                 |                 | ChooseShiftObject    |
 |                 |+---------+----+ |                      |
 | CheckIn()       |                 |                      |
 +-----------------+                 |                      |
                                     +----------------------+
                                              +
                                              |
                                              |
                                              +
                                              |
                                         +    +
                                    +-----------------------+
                                    |       Shift           |
                                    |-----------------------|
                                    |   DB.Open()           |
                                    |   DB.Insert(bla, bla. bla)
                                    |   DB.Close()          |
                                    |                       |
                                    |                       |
                                    |                       |
                                    +-----------------------+

关于android中的数据库,有一件事你应该知道。您必须将
SQLiteOpenHelper
对象创建为单实例,否则您将在多线程环境中遇到问题。你可以找到一个解释,以及为什么要这么做。

关于android中的数据库,有一件事你应该知道。您必须将
SQLiteOpenHelper
对象创建为单实例,否则您将在多线程环境中遇到问题。您可以找到一个解释以及为什么要这样做。

谢谢,我的SQLiteOpenHelper类与Reto Meir在他的书中描述的一样,我知道它是缓存的。谢谢,我的SQLiteOpenHelper类与Reto Meir在他的书中描述的一样,我知道它是缓存的。