gpt4 book ai didi

java - 重构类型代码覆盖

转载 作者:行者123 更新时间:2023-12-04 21:39:06 25 4
gpt4 key购买 nike

我目前正在寻找一段序列化/反序列化数据的代码。

类结构如下所示:

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 的实现方式不是最好的。

编写一个抽象方法来返回该类的唯一标识符感觉就像一股难闻的气味。

有没有更好的方法来实现它?

最佳答案

在基类中列出特定于子类的常量并不是一个好主意,因为理想情况下父类(super class)不应该知道它的子类。仅仅列出基类中的常量并不像在基类的代码中使用它们来区分子类那样糟糕。

理想情况下,您应该将常量移动到它们各自的子类中。如果您不能在不破坏编译的情况下做到这一点,那么您确实偶然发现了重构的主要候选对象。

关于java - 重构类型代码覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10577202/

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