Что такое API компонента
API компонента определяется не модификатором
public, а цепочкой связей, начинающейся от фасада компонента.
API компонента — это множество операций, прямо или опосредованно доступных через фасад компонента, и типов, необходимых для их использования.
API компонента не включает в себя метод запуска компонента.
Каждый компонент обладает своим API.
Интерфейс компонента задаётся через Component.start(): Facade, где Facade является единственной точкой входа (см. Что такое программный компонент. API компонента — это все операции, которые достижимы из этого фасада через цепочки вызовов методов и их возвращаемые значения. Таким образом, API не задаётся списком публичных классов или интерфейсов и их методов, а получается как замыкание всех достижимых операций и классов, начиная от Facade.
Рассмотрим пример:
public interface WaterTracker {
DailyPlan run();
}
public interface DailyPlan {
Bottle todaysNorm();
}
public class Bottle {
Bottle() {}
public void drink(int ml) {
...
}
public int left() {
...
}
}
public class Glass {
public Glass() {
...
}
}
Здесь фасадом является DailyPlan. Bottle является частью API, так как он достижим через через метод todaysNorm. Методы drink и left также являются частью API, поскольку достижимы через цепочку DailyPlan->Bottle. Класс Glass, хоть и обладает публичным конструктором, является самостоятельным классом и не является частью API.