java - 如何正确管理对数据库对象的访问?

标签 java oop object-oriented-analysis

我想知道是否有更好的解决方案来解决我的问题。 更好的是,并非 Segment 类的每个对象都必须创建新的数据库对象。

我试图在我的程序中只保留一个数据库,因为该数据库非常大,而且我确信有一种更有效的解决方案。

数据库将 SegmentInformation 类的对象保存在列表中。每个对象都包含每个 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 对象:

In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to one "single" instance. This is useful when exactly one object is needed to coordinate actions across the system. The term comes from the mathematical concept of a singleton.

https://en.wikipedia.org/wiki/Singleton_pattern

关于java - 如何正确管理对数据库对象的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630523/

相关文章:

java - 对 OOP 和过程编程做出这样的肯定是正确的吗?

domain-driven-design - 食品配送用例中的有界上下文

java - Spring RestTemplate.getForObject() 的 JSON 转换错误

java - Solr/tomcat 中的 SocketException 管道损坏

java - 如果设置了其他元素,如何排除注释元素

java - 使用 Spring 从 Angular 表单中恢复数据

PHP:我是否将事件驱动编程与信号感知接口(interface)(信号和插槽/观察者模式)混为一谈?

arrays - 如何在 Processing 中将数组数据与 frameCount 组合

Python - 传递对象引用?

c++ - 处理对象组的设计模式