首页 > 解决方案 > 如何正确管理对数据库对象的访问?

问题描述

我想知道天气是否有更好的解决方案来解决我的问题。更好的是,并非 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 对象有什么建议吗?

标签: javaoopobject-oriented-analysis

解决方案


使用 Singleton 包含所有 Segment 对象:

在软件工程中,单例模式是一种软件设计模式,它将类的实例化限制为一个“单一”实例。当需要一个对象来协调整个系统的动作时,这很有用。该术语来自单例的数学概念。

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


推荐阅读