Когда и как правильно использовать interface? Java

подскажите пожалуйста, как понять, что я правильно использую interface? Насколько я знаю, что через интерфейсы пишут, чтобы делать unit-тесты и легко заменять модули, чтобы все приложение не отпадало. Очень полезно в крупных проектах. Не могу понять, как понимать, когда и где нужно применять... Не все же делать через интерфейсы?

И один человек мне сказал, что лучше сделать много ошибок с интерфейсами, нежели переписывать потом весь проект.

И где обычно хранят impl файлы? Там же где и интерфейс? Или же в отдельном пакете?


Ответы (1 шт):

Автор решения: Olegator36

Хочу отметить две основных функции:

1). Служит для передачи метода в качестве параметра метода или конструктора с помощью создания экземпляра. Посмотрите, например, на интерфейс Runnable, который включает в себя один метод - Run. Запустить поток:

new Thread(myRunnable).start();

2). Представьте, что вы создаете библиотеку для запросов на сервер, в ней есть JSON инструмент, который реализует ваш интерфейс Encodable, содержащий два метода: String encode(Point p) и Point decode(String s). Point - класс содержащий две переменные типа int. Также у вас есть класс JsonManager с полем public static Encodable encoder, по умолчанию содержащее ваш декодер. Но пользователь библиотеки может написать свой, реализуя интерфейс Encodable и заменить ваш. Вызывать методы вот так:

JsonManager.encoder.encode();
JsonManager.encoder.decode();

Надеюсь понятно объяснил)

→ Ссылка