java - 如何正确管理对数据库对象的访问?
问题描述
我想知道天气是否有更好的解决方案来解决我的问题。更好的是,并非 Segment 类的每个对象都必须创建一个新的数据库对象。
我试图在我的程序中只保留一个数据库,因为数据库非常大,我相信有一个更有效的解决方案。
数据库将 SegmentInformetion 类的对象保存在列表中。每个 Object 包含每个 Segment 对象实例化所需的许多信息。
图层类包含一个段列表。Layers 构造函数包含一个带有 ID 的数组。每个段都将从数据库中获取其信息,具体取决于它调用数据库的 ID。
Database {
List<SegmentInformation> segInfoList;
public SegmentInformation getSegInfos( int id ){
return segInfoList.get(id);
}
}
Layer{
List<Segments> segmentList;
public Layer( int[] segmentIDs ){
for (int i : segmentIDs){
segmentList.add( new Segment( segmentIDs[i] ) );
}
}
}
Segment{
double value1;
//....
double valuenN;
public Segment(int sID){
Database db = new Database();
SegmentInformation info = db.getSegInfos( sID );
value1 = info.getValue1();
//....
valueN = info.getValueN();
}
}
我试图避免包含数据库的全局静态变量。对于更合适的方式来实例化所有 Segment 对象有什么建议吗?
解决方案
使用 Singleton 包含所有 Segment 对象:
在软件工程中,单例模式是一种软件设计模式,它将类的实例化限制为一个“单一”实例。当需要一个对象来协调整个系统的动作时,这很有用。该术语来自单例的数学概念。
推荐阅读
- r - 在 data.table 中生成索引日期前后 21 天的日期
- python - 如何以编程方式选择一个单元格并检索 Tkinter Treeview 中的内容?
- c# - 如何在 c# 中的每个系统上使用点作为小数分隔符
- ubuntu - libcurl.so.4:没有可用的版本信息
- java - RecycleView 中可定制适配器的问题 - Android/Java
- random-forest - 随机森林中的决策树回归器是否有不同的参数?
- c++ - 执行方法后一行出现两次
- reactjs - Redux-Form 使用索引作为字段数组的键,这不是一种反模式吗?
- r - 使用 ggplot 绘制分组数据
- laravel - 使用 Maatwebsite\Excel 3.1 的 Laravel 7 带有 excel 文件的邮件附件