Логично создать абстрактный класс с повторяющимися полями и унаследоваться от него. А в каждом дочернем классе добавить что нужно.
Это как раз нарушение solid, а точнее lsp.
А однозначного ответа, тут быть не может, потому как слишком общий вопрос. Читайте DDD