design pattern www.cppdepend.com