実行できる最悪のことは、階層データ表現をフォーマットと結合することです。階層クラスは、フォーマットについて何も知らないはずです。私のアドバイスはHierarchyFormatter
、いくつかの異なる実装で別個のインターフェースを作成することです。
コードは千の言葉の価値があると思います:
public interface HierarchyFormatter {
String format(Hierarchy hierarchy);
}
public class BraceFormatter implements HierarchyFormatter {
public String format(Hierarchy hierarchy) {
//...
}
}
public class RangeFormatter implements HierarchyFormatter {
public String format(Hierarchy hierarchy) {
//...
}
}
これは、戦略デザインパターンと呼ばれます。一部のコードで階層をフォーマットする必要がある場合は、-anyinstanceのインスタンスを渡すだけHierarchyFormatter
です。
階層を何らかのフォーマットで永続的にバインドする場合は、フォーマッターをステートフルにします。
public abstract class HierarchyFormatter {
protected final Hierarchy hierarchy;
public HierarchyFormatter(Hierarchy hierarchy) {
this.hierarchy = hierarchy;
}
public abstract String format();
}
public class BraceFormatter extends HierarchyFormatter {
public String format() {
//...
}
}
public class RangeFormatter extends HierarchyFormatter {
public String format() {
//...
}
}
フォーマッタを作成するたびに、その中に階層クラスをカプセル化します。