Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvOpCoIR 134 of 147 menu
◀ ▶

Подмена реализации через интерфейс в Java

Если поле имеет тип интерфейса, реализацию можно заменить. Основной класс при этом менять не придется. Сначала опишем интерфейс для вывода текста:

interface Printer { void print(String text); }

Сделаем реализацию, которая выводит текст как есть:

class ConsolePrinter implements Printer { @Override public void print(String text) { System.out.println(text); } }

Теперь сделаем вторую реализацию. Она добавляет к тексту префикс:

class PrefixPrinter implements Printer { @Override public void print(String text) { System.out.println("post: " + text); } }

Класс Post зависит только от интерфейса, поэтому подходит любая реализация Printer:

class Post { private String title; private Printer printer; Post(String title, Printer printer) { this.title = title; this.printer = printer; } void printTitle() { printer.print(title); } }

При создании объекта выберем нужную реализацию:

Post post = new Post("News", new PrefixPrinter()); post.printTitle();

Сделайте интерфейс SalaryPrinter и две реализации: одна выводит число как есть, другая добавляет знак доллара.

Передайте разные реализации в класс Employee и проверьте, что вывод зарплаты меняется.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить