Node.java:
package gendwang.cisco.com;
public class Node
{
int value;
Node next;
}
List.java:
package gendwang.cisco.com;
public interface List
{
public void addNode(int value);
public void print();
}
LinkedList.java:
package gendwang.cisco.com;
public class LinkedList implements List
{
private Node head = null;
public void addNode(int value)
{
Node node = new Node();
node.value = value;
node.next = head;
head = node;
}
public void print()
{
Node tmp = head;
while(tmp != null)
{
System.out.print(tmp.value + " ");
tmp = tmp.next;
}
}
}
DecoratorList.java:
package gendwang.cisco.com;
public class DecoratorList implements List
{
private List list;
public DecoratorList(List list)
{
this.list = list;
}
public void addNode(int value)
{
list.addNode(value);
}
public void print()
{
list.print();
}
}
CountedList.java:
package gendwang.cisco.com;
public class CountedList extends DecoratorList
{
private int size = 0;
public CountedList(List list)
{
super(list);
}
public void addNode(int value)
{
size++;
super.addNode(value);
}
public void printSize()
{
System.out.println("size is " + size);
}
}
Test.java:
package gendwang.cisco.com;
public class Test
{
public static void main(String[] args)
{
List list = new LinkedList();
CountedList countedList = new CountedList(list);
countedList.addNode(6);
countedList.print();
countedList.printSize();
countedList.addNode(7);
countedList.print();
countedList.printSize();
countedList.addNode(10);
countedList.print();
countedList.printSize();
}
}