0

nullオブジェクトのデザインパターンを使用して、リストの最初と最後にnullオブジェクトと二重にリンクされたものを実装しようとしています。したがって、空のリストには 2 つの null オブジェクトが含まれます。だから私はこのコードを書きましたこれはnullオブジェクトの設計パターンに従っていますか? そうでない場合、どうすればそれを達成できますか。任意の提案をいただければ幸いです。

更新されたコード-

// Creating a doubly linked list.
        doubleLinkedList = new DoubleLinkedList();

    class DoubleLinkedList {

        private NewLink firstNode;
        private NewLink lastNode;
        private NewLink rootNode;



        public DoubleLinkedList() {

//So this satisfies my question that I have asked meaning null objects at beginning and last node or something else I have to do.
            firstNode = NewLink.NULL_NODE;
            lastNode  = NewLink.NULL_NODE;

        }

    }



    class NewLink {

        public String  data;
        public NewLink nextPointer;
        public NewLink previousPointer;


public static final NewLink NULL_NODE = new NewLink(); 



        public NewLink(String id) {

            data = id;

        }

public NewLink() {

    }
        // Overriding toString method to return the actual data of the node
        public String toString() {

            return "{" + data + "} ";

        }
    }
4

3 に答える 3

4

いいえ、あなたのコードは を実装していませんNull Object Design Pattern。その本質は、使用することではなく、nullを表すオブジェクトを作成することnullです。

例えば:

public static final NewLink NULL_NODE = new NewLink();

その後:

firstNode = NULL_NODE;
lastNode  = NULL_NODE;
于 2012-02-19T10:52:21.427 に答える
2

いくつかの既定の動作を割り当てたい場合 (または既定の動作として一部の動作が発生しないようにしたい場合) は、 Null オブジェクト デザイン パターンを使用します。たとえば、Null オブジェクト パターンを使用すると、次のコードを置き換えることができます。

if(myObj!=null) 
myObj.DoSomething();
else
DoSomethingElse();

これで:

myObj.DoSomething() //assuming that myObj can be a Null object (not a null reference) that has implemented DoSomethingElse when you ask it to DoSomething()

したがって、Null Object 設計パターンは実際にはデフォルトのオブジェクト参照 (null 参照ではない) を使用します。

于 2012-02-19T11:10:45.203 に答える
1
public static final NewLink NULL_NODE = new NewLink(); 

NewLinkクラスにいる必要があります

それで

firstNode = NewLink.NULL_NODE;
secondNode = NewLink.NULL_NODE;

また、すべてのメソッドをNewLink抽象化
して、NULL オブジェクト用と非 NULL オブジェクト用の 2 つのネストされたクラスを作成することもできます。
困難な状況で非常に役立つ可能性があります

于 2012-02-19T11:07:19.147 に答える