java - 设计——从哪里打开、插入和关闭数据库?

标签 java android design-patterns

我需要一些设计建议。

这是我的用户故事:

作为用户,我想将我的工作时间保存到数据库中以供以后查看。我希望它很简单,只需在主屏幕上单击一个按钮即可。

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

在类“X”构造函数中,我建立并打开了数据库连接,并在此类方法之一中将新数据插入到数据库中。

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

我附上了类似 UML 的类流以寻求帮助:

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

最佳答案

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

关于java - 设计——从哪里打开、插入和关闭数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14212255/

相关文章:

php - PEAR DB_DataObject 正在实现什么设计模式?

java - 这四个 Android 类包含的模式的名称是什么?

java - 我是否应该为依赖实体提供单独的休息 Controller

java - 当 JsonProperty 属性不同时如何打印对象 json?

java - 在哪里可以找到有关 spring-security 注释的更多信息

java - 电池使用,会发生什么?

java - 根据属性值 spring boot 从列表中过滤对象

android-layout - 更改应仅反射(reflect)在平板电脑设备中

php - 如何从数据库mysql中获取总数据表并在android中显示

ruby - 如何从特定(已知)模式映射新数组?