Достаточно сложный для понимания, но крайне важный в программировании паттерн. Суть его заключается в том, что бы не использовать виртуальность в интерфейсах.