Какой язык вы используете? C # имеет частичное ключевое слово, которое также будет работать в этом случае, не требуя двух классов.
Чтобы ответить на ваш вопрос, достаточно стандартно иметь базовые классы, которые ничего не делают напрямую, но в целом полезны. Обычно это используется, чтобы избежать дублирования кода, но это не является строгим требованием.
Я бы вместо этого постулировал, достаточно ли двух классов? Если подавляющее большинство вашей кодовой базы находится в одном классе, то вы создаете проблему обслуживания даже с двумя классами.
Возможно, вы могли бы вместо этого разделить ваши классы на более мелкие. Например, типичный набор классов ООП может выглядеть так:
Customer
ShoppingCart
Item
Special
Payment
Order
И это всего лишь объекты данных, в зависимости от вашей реализации вы, вероятно, также можете инкапсулировать некоторые из ваших алгоритмов, например, как рассчитать цену (хотя в этом случае она может существовать в Item ...)