История изменений
Исправление
Legioner,
(текущая версия)
:
раньше клиент класса знал только про один объект - Car, а теперь ему приходится еще слушать про Engine. А как же инкапсуляция? Зачем ему нужно про этот Engine знать.
Нет. Клиенту класса car приходит уже сконструированный, ему не нужно знать про Engine.
class CarClient {
private final Car car;
CarClient(Car car) {
this.car = car;
}
void useCar() {
car.use();
}
}
Про Engine нужно знать тому, кто конструирует весь граф объектов. Это может быть просто метод main, это может быть фреймворк типа Spring.
Исходная версия
Legioner,
:
раньше клиент класса знал только про один объект - Car, а теперь ему приходится еще слушать про Engine. А как же инкапсуляция? Зачем ему нужно про этот Engine знать.
Нет. Клиенту класса car приходит уже сконструированный, ему не нужно знать про Engine.
class CarClient {
private final Car car;
CarClient(Car car) {
this.car = car;
}
void useCar() {
car.use();
}
}