それを行うためになぜライブラリが必要なのですか?
これがドメイン オブジェクト グラフであると指定した場合、関連するインターフェイスを定義および実装して、さまざまなビジター実装がドメイン オブジェクトにアクセスできるようにしてみませんか? 実装の 1 つは (指定したとおり) 各 ID を にリセットできますnull
。
例
最初に、アクセスできるオブジェクトまたはビジターとして機能するオブジェクトによって実装されるインターフェイスを定義します。
public interface Visitable {
void visit(Visitor visitor);
}
public interface Visitor {
void visitDomainObjectA(DomainObjectA obj);
void visitDomainObjectB(DomainObjectB obj);
}
次に、2 つのドメイン オブジェクト クラスを定義します。どちらもアクセスできます。
public abstract class DomainObject implements Visitable {
private Object id;
public Object getId() { return this.id; }
public void setId(Object id) { this.id = id; }
}
public class DomainObjectA extends DomainObject {
public void visit(Visitor visitor) {
visitor.visitDomainObjectA(this);
}
}
public class DomainObjectB extends DomainObject {
public void visit(Visitor visitor) {
visitor.visitDomainObjectB(this);
}
}
次に、何か役に立つ具体的な Visitor 実装を定義します。
public class MyVisitor implements Visitor {
public void visitDomainObjectA(DomainObjectA doa) {
doa.setId(null);
}
public void visitDomainObjectB(DomainObjectB dob) {
doa.setId(UUID.randomUUID());
}
}