Если ваш код знает, какой класс будет использоваться, вы правы, нет смысла иметь переменную типа интерфейса. Как в вашем примере. Этот код знает , что класс, который будет создан, является Worker
, , потому что этот код не будет волшебным образом изменяться и создавать что-либо еще, кроме Worker
. В этом смысле ваш код связан с определением и использованием Worker
.
Но вы можете написать некоторый код, который работает, не зная тип класса. Возьмем для примера следующий метод:
public void stopWorker(IWorker worker) {
worker.stop(); // Assuming IWorker has a stop() method
}
Этот метод не заботится о конкретном классе. Он будет обрабатывать все, что реализует IWorker
.
Это код, который вам не нужно менять, если позже вы захотите использовать другую реализацию IWorker
.
Все дело в слабой связи между вашими частями кода. Все дело в ремонтопригодности.