Когда и как правильно использовать interface? Java
подскажите пожалуйста, как понять, что я правильно использую interface? Насколько я знаю, что через интерфейсы пишут, чтобы делать unit-тесты и легко заменять модули, чтобы все приложение не отпадало. Очень полезно в крупных проектах. Не могу понять, как понимать, когда и где нужно применять... Не все же делать через интерфейсы?
И один человек мне сказал, что лучше сделать много ошибок с интерфейсами, нежели переписывать потом весь проект.
И где обычно хранят impl файлы? Там же где и интерфейс? Или же в отдельном пакете?
Ответы (1 шт):
Хочу отметить две основных функции:
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();
Надеюсь понятно объяснил)