gpt4 book ai didi

android - 如何正确分离 Dao 类和业务逻辑类?

转载 作者:行者123 更新时间:2023-11-30 01:43:34 26 4
gpt4 key购买 nike

我正在使用 GreenDao 在 Android 上处理我的 Dao。 GreenDao 使用 Java 应用程序自动生成所有 Dao 类。因此,您不想修改这些类,因为您的自定义代码将在下次运行 Java 应用程序时被覆盖。

这是我目前的分离方法,看起来很接近,但非常多余:

道模型(自动生成):

public class Car() {
...
String mMake;
String mModel;
int mMilesDriven;
...

public String getMake() {
return mMake;
}

public String getModel() {
return mModel;
}

public int getMilesDriven() {
return mMilesDriven;
}

}

业务逻辑类:

public class CarUtil() {

Car mCar;

public CarUtil(Car car) {
mCar = car;
}

public String getName() {
return mCar.getMake() + " " + mCar.getModel();
}

public int getMilesDriven() {
return mCar.getMilesDriven();
}

}

显然,这看起来非常多余,但是,由于 Car() 是自动生成的并且没有正确的业务逻辑(例如将汽车名称的品牌和型号组合起来),我认为这是必要的冗余吗?

我相信我的模型实现了数据层和业务逻辑层的良好抽象,但我怎样才能用更少的代码使其更高效?

谢谢!

最佳答案

您可以将业务逻辑放入KEEP-SECTION block 中。这些不会被覆盖。 (您必须告诉 greendao 生成器使用 KEEP-SECTIONS。)

如果您不想公开一些生成的公共(public)方法,您还可以在生成的类上有一个接口(interface),它只公开您想要的东西并在您的应用程序中使用该接口(interface)。

更新

接口(interface):

public interface CarUtil {
String getName();
int getMilesDriven();
}

实体(生成);

public class Car() implements CarUtil {

...
String mMake;
String mModel;
int mMilesDriven;
...

public String getMake() {
return mMake;
}

public String getModel() {
return mModel;
}

public int getMilesDriven() {
return mMilesDriven;
}

// KEEP-SECTION-START
@Override
public String getName() {
return getMake() + " " + getModel();
}
}

所以通常你只使用接口(interface),所以接口(interface)和其他公共(public)方法都是隐藏的。

根据您的需要,最好包装生成的 DAO(而不是实体),以便只有 DAO 层知道真正的实现。

关于android - 如何正确分离 Dao 类和业务逻辑类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34082016/

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