Linked list node implementation with maximum code reuse
Usually linked lists keep most methods as private and the actual nodes cannot be accessed by the public API.

If you start implementing the different methods for adding, removing, etc. you might have on singly and doubly linked lists, you will find the implementations are quite different.  So much so that I think it would be simpler to have two completely separate classes.  They could both implement the java.util.List interface.  I'm a huge fan of code reuse, but I don't think it's a good idea in this case.  Trying to share some code between singly and doubly linked list would end up making the code less readable.  This is just a guess since I have not actually tried implementing them.