Understanding the 23 Gang of Four (GoF) design patterns