gpt4 book ai didi

java - 好的做法是将光标传递给构造函数吗? (Java/安卓)

转载 作者:行者123 更新时间:2023-12-01 11:44:56 26 4
gpt4 key购买 nike

我的一些 friend 告诉我,在构造函数中通过游标初始化对象是不好的做法。但我不确定。我初始化光标并在一个方法中创建对象(我不将光标传递给另一种方法)。在构造函数中,我也不将光标移动到某个位置。

Cursor cursor = getVehiclesAsCursor();
while (cursor.moveToNext()) {
Vehicle vehicle = new Vehicle(cursor);
//Do something
}
if (cursor!=null) close.closeCursor();

我在车辆类中的构造函数

public Vehicle(Cursor cursor) {
id = cursor.getInt(cursor.getColumnIndex(_ID));
name = cursor.getString(cursor.getColumnIndex(NAME));
...
}

请告诉我,代码是好是坏?谢谢!

最佳答案

出于以下原因,我认为这种做法不好:

  1. 游标是一种短暂的构造,仅在事务内有效。如果对象的生存时间比事务长,并且保留对游标的引用,则在最好的情况下,它具有陈旧的游标,在最坏的情况下,会扰乱事务处理

  2. 游标是一个高度实现特定的对象。在您的示例中,您创建了数据对象对 SQL 逻辑的依赖关系。为什么数据类需要知道如何从游标读取数据、处理 SQL 错误等?它需要知道的只是它的数据。

  3. 这是第 2 点的扩展:将数据类与数据库实现联系起来。如果更改存储数据的方式,则必须更改数据类。你不希望这样。

关于java - 好的做法是将光标传递给构造函数吗? (Java/安卓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29228912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com