В настоящее время есть фрагмент кода, который в настоящее время выглядит как сериализованные/десериализованные данные.Переопределение кода рефакторинга
Классовая структура выглядит следующим образом:
public class Field
{
public abstract void writeField(DataOutputStream out);
public abstract int getFieldID();
...
protected static final int INT_FIELD = 1;
protected static final int BOOL_FIELD = 2;
...
public void write(DataOutputStream out)
{
out.writeInt(getFieldID());
writeField(out);
}
...
}
public class IntField extends Field
{
public int v;
public void writeField(DataOutputStream out)
{
out.writeInt(v);
}
public int getFieldID()
{
return Field.INT_FIELD;
}
}
Я чувствую себя, как GetFieldID реализуется не является лучшим.
Написание абстрактного метода для возврата уникального идентификатора для этого класса кажется неприятным запахом.
Есть ли более эффективные способы реализации этого?
Смотрите мой ответ, если это то, что вы хотите. – nnhthuan