私はツリー構造のストレージに取り組んでおり、現在トランザクション メソッドを使用してツリー構造を変更しています。コマンドパターンを使用するのが適切だといつも思っていました。ただし、小さな動作を変更しただけで気に入っています (挿入されたノードにあるトランザクション インスタンスを返す (属性を除く)):
wtx.insertText(EInsert.ASRIGHTSIBLING, "value").insertElement(EInsert.ASRIGHTSIBLING, new QName("bla").insertElement(EInsert.ASFIRSTCHILD, new QName("blubb")).insertAttribute(new QName("foo"), "bar").insertAttribute(new QName("bar"), "foo"));
このように操作を連鎖させるのはとてもいいことだと思いますが、私たちのトランザクションは現在のトランザクション インスタンスの代わりにブール値を返すツリー上のメソッド ( moveTo(long)
、moveToParent()
、moveToFirstChild()
...) のようなカーソルを提供しますが、これは避けられないと思います。それ以外の場合は、面倒な作業なしで移動することさえできます
wtx.method();wtx.method();wtx.method();
しかし、私はコマンドパターンについて考えました
new InsertText(EInsert.ASRIGHTSIBLING, "value").execute(wtx);
new InsertElement(EInsert.ASRIGHTSIBLING, new QName("bla")).execute(wtx);
...
これはもう少し冗長ですが、オープン/クローズの原則を「サポート」するので、非常に便利です。
それで、あなたはどう思いますか?