Вы можете взглянуть на шаблон компоновщика.
Вот один пример (использует внутренний класс компоновщика):
public class XpathBuilder {
public Builder builder() {
return new XpathBuilder.Builder();
}
class Builder {
private final StringBuilder sb;
Builder() {
sb = new StringBuilder();
}
public Builder child(String name) {
sb.append("/").append(name);
return this;
}
public Builder down(String name) {
sb.append("//").append(name);
return this;
}
public String build() {
return sb.toString();
}
}
}
Его можно назвать так:
String path = new XpathBuilder().builder().child("div").down("button").child("a").child("span").build();
Вот еще один пример (использует компоновщик и шаблон синглтона):
public class XpathBuilder {
private final StringBuilder sb;
private static XpathBuilder instance;
private XpathBuilder() {
sb = new StringBuilder();
}
public static XpathBuilder newInstance() {
if (instance == null) {
instance = new XpathBuilder();
}
return instance;
}
public XpathBuilder child(String name) {
sb.append("/").append(name);
return this;
}
public XpathBuilder down(String name) {
sb.append("//").append(name);
return this;
}
public String build() {
return sb.toString();
}
}
Его можно назвать так:
String path = XpathBuilder.newInstance().child("div").down("button").child("a").child("span").build();