Как правильно управлять доступом к объекту базы данных? - PullRequest
4 голосов
/ 30 октября 2019

Мне интересно, погода лучше решит мою проблему. Лучше в том смысле, что не каждый объект класса Segment должен создавать новый объект базы данных.

Я пытаюсь сохранить только одну базу данных в моей программе, потому что база данных очень большая, и я уверен, что есть более эффективное решение для этого.

База данных содержит объекты класса SegmentInformetion в списке. Каждый объект содержит много информации, необходимой каждому объекту сегмента для его реализации.

Класс Layer содержит список сегментов. Конструктор Layers содержит массив с идентификаторами. Каждый сегмент будет получать свою информацию из базы данных в зависимости от идентификатора, с которым он вызывает базу данных.

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();
    }
}

Я пытаюсь избежать глобальной статической переменной, содержащей базу данных. Любые предложения для более подходящего способа создания экземпляров всех объектов Сегмента?

1 Ответ

0 голосов
/ 31 октября 2019

Используйте Singleton, чтобы содержать все объекты Segment:

В разработке программного обеспечения шаблон синглтона - это шаблон разработки программного обеспечения, который ограничивает создание экземпляра класса одним «единственным» экземпляром. Это полезно, когда ровно один объект необходим для координации действий в системе. Термин происходит от математической концепции синглтона.

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

...