Некоторые паттерны реализации полиморфного поведения в C++