現在、シリアル/デシリアス・データのようなコードがあります。 getFieldIDが実装されている方法が最善ではないように私は感じリファクタリング・タイプ・コードのオーバーライド
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;
}
}
:
クラスの構造は次のようになります。
そのクラスの一意の識別子を返す抽象メソッドを記述すると、悪臭のように感じます。
これを実装するより良い方法はありますか?
は私の答えを参照してください。 – nnhthuan