【问题标题】:How to manage access to a database object properly?如何正确管理对数据库对象的访问?
【发布时间】:2020-02-26 01:21:15
【问题描述】:

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

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

数据库将 SegmentInformetion 类的对象保存在一个列表中。每个 Object 包含每个 Segment 对象实例化所需的许多信息。

图层类包含一个段列表。 Layers 构造函数包含一个带有 ID 的数组。每个 Segment 都会根据调用数据库的 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 对象有什么建议吗?

【问题讨论】:

    标签: java oop object-oriented-analysis


    【解决方案1】:

    使用 Singleton 来包含所有 Segment 对象:

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

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

    【讨论】:

    • 感谢安德烈斯的帮助。我将需要许多行为不同的 Segment 对象。我是否使用 Singelton 来包含数据库?除了 Singelton 模式(我试图避免),理论上还有其他方法吗?
    • @jasmindragon 如果你想要数据的单个实例,单例是要走的路。如果您使用 Spring 框架实现您的应用程序,您将获得开箱即用的单例模式,而您不必自己实现它。
    猜你喜欢
    • 2021-10-23
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多