Рубрики
Без рубрики

Программирование на Java для интерфейсов с использованием статических методов

Программирование для интерфейсов, Программирование интерфейса Java, код принципа проектирования java в отношении интерфейсов, а не реализаций, код для интерфейса, пример кодирования интерфейса java.

Автор оригинала: Pankaj Kumar.

В этом кратком руководстве мы поймем, как статические методы на интерфейсах помогают нам разрабатывать лучший код и поддерживать основной принцип проектирования: “Программа для интерфейса, а не реализация”. Вы можете найти основные сведения о статических методах в разделе Изменения интерфейса java 8 . Давайте начнем с программирования по принципу проектирования интерфейсов.

Программирование на Java для интерфейсов

В Java мы видели, как несколько классов коллекций следуют этим принципам, где конкретная реализация предоставляет только методы, которые они реализуют, из интерфейсов, оставляя остальную часть реализации в частных методах.

Проблема с программированием для реализации интерфейса

Давайте представим интерфейс СуперГерои , который дает нам список персонажей.

public interface SuperHeros {
	public List getCharacters();
}

Существует множество студий комиксов, и каждая студия будет иметь свою собственную конкретную реализацию.

public class DCSuperHeros implements SuperHeros {
	List characters = List.of("Super Man", "Bat Man", "Wonder Woman", "Cyborg", "Flash");

	public List getCharacters() {
		return characters;
	}
}
public class MarvelSuperHeros implements SuperHeros {
	List characters = List.of("Spider Man", "Captain America", "Daredevil", "Wolverine", "Iron Man");

	public List getCharacters() {
		return characters;
	}
}

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

SuperHeros marvelHeros = new MarvelSuperHeros();
SuperHeros dcHeros = new DCSuperHeros();

Это приводит к тому, что по своей сути связывает клиентский код с конкретной реализацией, а затем становится трудно изменить конкретные реализации позже, поскольку это уже было доступно клиентам.

Несмотря на то, что у нас есть интерфейсы, но мы предоставили заказчику конкретные детали реализации и нарушили принцип проектирования: Программа для интерфейса, а не реализация . Так как же нам это исправить и сделать лучше?

Статические методы Java 8 на интерфейсах

Java 8 привнесла много новых функций, и одна из них-статический метод в интерфейсах. Эта очень интересная и важная функция в основном игнорируется сообществом разработчиков.

Чтобы следовать нашему принципу проектирования, мы бы ввели статические методы, которые являются статическими фабриками, для создания экземпляра Конкретной реализации Супергероев. Давайте добавим статический метод в интерфейсы:

public interface SuperHeros {
	public List getCharacters();

	static SuperHeros createDCSuperHeros() {
		return new DCSuperHeros();
	}

	static SuperHeros createMarvelSuperHeros() {
		return new MarvelSuperHeros();
	}
}

Кроме того, сделайте ваши конкретные реализации непубличными. Теперь клиенты/клиент будут использовать код как:

SuperHeros marvelHeros = SuperHeros.createMarvelSuperHeros();
SuperHeros dcHeros = SuperHeros.createDCSuperHeros();

Теперь с помощью статических методов мы смогли написать статические фабрики для наших реализаций супергероев.

Ограничение : Этот подход может применяться только в том случае, если у вас есть контроль над интерфейсом, если это сторонний интерфейс, то он не будет работать, и вам лучше использовать общий подход.

Резюме

В этом кратком руководстве мы узнали, как программировать интерфейсы и как статический метод в интерфейсах помогает нам достичь этого.

И чтобы завершить, вы найдете исходный код этой статьи на Github .