update: design pattern, add singleton.cpp