我在 Android 上使用 SQLite ORM 来保存和查询数据。
我有一些用于 ORM 的 POJO,这些 POJOS 中有几个相同的属性,例如“时间戳”。
那么我是否应该将这些公共(public)属性提取到基类中,以防止其他协作者忘记使用这些属性?例如,
class BaseEvent {
String activityName;
//activityName getter and setter
}
class TouchEvent extends BaseEvent {
int x;
int y;
//x and y's getter and setter
public TouchEvent(int x,int y,String activityName){...}
}
class AccelerationEvent extends BaseEvent {
float x,y,z;
public AccelerationEvent (float x,float y,float z,String activityName){...}
}
忽略特定的ORM(Realm.io),这是设计模式的良好实践吗?
最佳答案
看着这个issue从2015年开始,我们可以看到Realm在真正的多态性方面存在问题。
此刻继承 Realm 可以让你:
- 子类继承父类的类方法、实例方法和属性。
- 以父类为参数的方法和函数可以对子类进行操作。
因此,当您使用 Realm 时,强烈建议使用组合
而不是继承
。
编辑
让我们使用组合重写您的示例:
interface BaseEvent {}
class TouchEvent implements BaseEvent {}
class AccelerationEvent implements BaseEvent {}
class SomeOfYourClass{
BaseEvent event;
}
关于java - 我应该在 Java POJO 上使用 "extends"来提取公共(public)属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53879303/