В каких формах может существовать интерфейс компонента

Если компонент предназначен для взаимодействия с другими компонентами, его интерфейс называется API. Если же компонент предназначен для взаимодействия с пользователем, его интерфейсом является UI.

Чтобы понять, почему UI тоже является интерфейсом компонента, сначала нужно разобраться, что такое контроллер. Единственная задача контроллера — переводить обращения к компоненту с одного языка на другой. Например, HTTP-контроллер переводит HTTP-запросы в вызовы операций компонента, а результаты их выполнения — обратно в HTTP-ответы. Точно так же работают контроллеры для RPC, RMI, сокетных протоколов и других способов взаимодействия. Другими словами, контроллер является переводчиком с одного «языка» общения на другой.

Подавляющее большинство графических приложений построено на основе архитектуры MVC, где контроллер выполняет ту же функцию переводчика. Разница лишь в том, что «языком», с которого выполняется перевод, здесь являются нажатия клавиш и щелчки мышью. Поэтому UI является таким же интерфейсом компонента, как и API.