Один из первых принципов, которые вы изучаете при разработке ОО:
Программа для интерфейса, а не
осуществление.
Вы указываете, что "когда-либо будет только один из этих больших классов - i / f никогда не будет использоваться для другого объекта". Это может быть правдой в вашем случае, но мне бы хотелось, чтобы у меня был никель на каждый раз, когда такое утверждение оказывалось неверным.
В дополнение к рассмотрению того, может ли быть несколько реализаций вашего интерфейса, вы должны также рассмотреть, экспортирует ли ваш конкретный объект (или может экспортировать) дополнительные методы, которые не разделяют логическое сходство с операциями, объявленными в интерфейсе. В таком случае вы можете просто объявить дополнительные операции в одном или нескольких дополнительных интерфейсах. Таким образом, клиенту нужно только соединиться с интерфейсом, который экспортирует операции, в которых он заинтересован.
Проще говоря, интерфейсы предоставляют средства для управления связью между клиентами и поставщиками.