Что такое composition-over-inheritance?
Используйте, когда возникает желание использовать наследование классов. Используйте при создании иерархии классов. Используйте, когда подклассу требуется только некоторое родительское поведение. Источник: yanko-belov/code-craft.