设计模式:使用Null最小化繁重的数据库查询

时间:2016-07-27 21:50:22

标签: android database oop design-patterns null

我目前是一名初级开发人员,致力于一些试图进入android java开发世界的项目。

然而,今天我的问题适用于大多数OOP驱动的概念。

让我谈谈这一点。我的Android应用程序有一些活动和方法最终会有非常繁重的数据库查询,这使得它非常慢,特别是因为我使用ORM(SugarORM)来加快速度(开发明智)和减少错误。

我已经找到了一个解决方案,它似乎工作得很好,但是,我认为最好在整合应用程序之前询问它。只是想知道这通常是不好的做法。

不幸的是,google并不是非常有用,主要是因为搜索类似问题所需的关键字总是会让我进入Null对象模式:|

我的实施示例:

private List<Book> mBooks;

public List<Book> getBooks() {
    if (this.mBooks == null)
        this.mBooks = SugarRecord.listAll(Book.class);
    return this.mBooks;
}

public List<Book> onBookListUpdated() {
    this.mBooks = null;
}

正如您所看到的,这可以确保查询仅执行一次(至少在预期列表发生更改之前)。

我需要知道的是,如果这是有意义的,有多少程序员会真正做这样的事情,如果它是什么东西,它叫什么?

此外,如果它是'好的'&#39;要做,将这个逻辑包装在一个类中是个好主意吗?

说出类似的话:

public class FastList<T> {

    public interface iFastList<TT> {
        List<TT> reloadList();
    }

    public FastList(iFastList<T> inCallback) {
        this.callback = inCallback; 
    }

    private iFastList<T> callback

    private List<T> currentList;

    public List<T> getList() {
        if (this.currentList == null)
            this.currentList = this.callback.reloadList();
        return this.currentList;
    }

    public void onListChanged() {
        this.currentList = null;
    }
}

提前感谢所有需要时间回答的问题。

1 个答案:

答案 0 :(得分:1)

Lazy Intitailization 它在objective-c

中很受欢迎
- (NSMutableArray *) myArray {
    if(!_myArray) {
        _myArray = [[NSMutableArray alloc] init];
    }
    return _myArray;
}