Это разные теории, но я лично считаю, что создание подклассов - хороший способ для такого рода вещей.
Затем вы можете создать свое приложение с пользовательскими компонентами, которые имеют дополнительные свойства в отношении встроенныхв единицах.
С моей точки зрения, вы многое выиграете, создав универсальные подклассы, а затем разместив подклассы в этих подклассах с определенным кодом.
Тогда у вас будет своего рода деривация,Тогда вы сможете легче управлять обратной совместимостью, и изменение в классе базовых компонентов отразится на всех подклассах.
Так что, по моему скромному мнению, просто не бойтесь подклассов для такого рода вещей.