2012-02-19 3 views
0

Я пытаюсь реализовать двойную связь с нулевыми объектами в начале и конце списка с использованием шаблона проектирования нулевого объекта. Таким образом, пустой список будет содержать два нулевых объекта. Итак, я написал этот код. Выполняет ли это шаблон шаблона нулевого объекта? Если нет, то как я могу это достичь. Все предложения будут оценены.Дизайн шаблона нулевого объекта в LinkedList

Обновленный код-

// 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 + "} "; 

     } 
    } 
+0

Это ваш полный код? –

+0

Я обновил код. – AKIWEB

ответ

1
public static final NewLink NULL_NODE = new NewLink(); 

должен быть в NewLink классе

так

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

также вы можете сделать все методы от NewLink - аннотация
и сделать два вложенных класса: для объектов NULL и для не NULL-объекта.
Это может быть очень полезно в сложных ситуациях

+0

Я обновил код в соответствии с вашими предложениями. дайте мне знать, если это прямо сейчас? – AKIWEB

+0

Теперь это нормально :) –

4

Нет, ваш код не реализует Null Object Design Pattern. Суть его заключается не в том, чтобы использовать null, а для создания объекта, который будет представлять null.

Например:

public static final NewLink NULL_NODE = new NewLink(); 

И потом:

firstNode = NULL_NODE; 
lastNode = NULL_NODE; 
+0

Я обновил код. Дайте мне знать, если это правильно? – AKIWEB

+0

Да, это основная идея. –

+0

@ Nevzz03 - см. Ответ 'user1143825' для перевода определения другому классу. Это более логично. –

2

Мы используем Null object design pattern, если мы хотим, чтобы присвоить некоторые виды поведения по умолчанию (или предотвратить некоторые виды поведения, чтобы случиться как поведение по умолчанию) Например, используя 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() 

Таким образом, нулевой объект шаблон проектирования фактически использует ссылку на объект по умолчанию (не пустой ссылка)

Смежные вопросы