I can answer your question about Singleton Design pattern. A Singleton Design pattern is meant to instantiate a class only once. In many cases it is absolutely essential to have a unique instance of a class.

Value Object pattern is used to reduce the network traffic. Consider that you are requesting to get a customer detail from an Entity Bean Via a Session Bean. Instead of calling getCustomerName(), getCustomerAddress(), getCustomerCity() methods separately will increase the network traffic, Instead you can call getCustomerDetails() which inturn will return CustomerVO object which contains all the customer data.