我有一个课程CodeText
,如下所示:
public class CodeText{
private char type;
private int textCode;
//Other members
}
有时,如果Symbol
对象引用CodeText
对象时出错,我需要"记录"那个Symbol
以便CodeText
"知道"谁在错误发生时提到它。
目前我添加了另一名成员" relatedSymbol"像下面的课程CodeText
,但感觉就像一个丑陋的设计。
public class CodeText{
private char type;
private int textCode;
private Symbol relatedSymbol;
//Other members
}
我不确定上述内容是否可以改进。任何建议都表示赞赏。
编辑:很抱歉,我没有提供足够的背景信息。
我的目标如下:
对于课程CodeText
,textCode
值会根据类型进行调整。
例如。如果类型是' I'(意味着立即),则textCode
不变;
如果类型为' E'(表示外部),则应重新计算textCode
,然后引用外部Symbol
的地址。
但偶尔,textCode
的价值可能是错误的。例如,如果类型是" E"但textCode
点的价值
对于非法Symbol
,应记录此错误,并且CodeText
对象应该"知道"它试图引用Symbol
。
答案 0 :(得分:0)
有时,如果Symbol对象引用a时出错 CodeText对象,我需要“记录”那个Symbol以便CodeText “知道”错误发生时是谁引用它。
如果您的目标是记录/跟踪错误,那么将导致Symbol
的错误混合到现有的CodeText
类中并不是一个好主意,这将违反单一责任原则(look {{ 3}}),所以你可能还需要一个类ErrorRecorder
,如下所示,它的唯一责任是记录错误。
public class ErrorRecorder {
private final CodeText codeText;
private final Symbol relatedSymbol;
private final LocalDateTime errorCreatedDateTime;
public ErrorRecorder(CodeText codeText, Symbol relatedSymbol,
LocalDateTime errorCreatedDateTime) {
super();
//Add some validations to the fields
this.codeText = codeText;
this.relatedSymbol = relatedSymbol;
this.errorCreatedDateTime = errorCreatedDateTime;
}
//Add getters
}
答案 1 :(得分:0)
如果您希望它们分开,您可能还有另一个记录此类错误的对象
public class ReferenceError {
private CodeText codeText;
private Symbol symbol;
//Other members
}
或者如果您真的不需要录制任何其他内容,只需使用Pair<CodeText, Symbol>
然后你可以将它们保存在列表中
List<ReferenceError>
或List<Pair<CodeText, Symbol>>
如果您需要为同一个CodeText记录多个错误
,甚至是Map<CodeText, Symbol[]>