C++ programming with design patterns revealed - Muldner, Tomasz (Addison-Wesley, 2002)