Отделите абстракцию от ее реализации, чтобы они могли изменяться независимо друг от друга.
- Абстракция: определяет интерфейс абстракции. Поддерживает ссылку на объект типа Implementor.
- Уточненная абстракция: расширяет интерфейс, определенный абстракцией.
- Разработчик: определяет интерфейс для классов реализации. Этот интерфейс не обязательно должен точно соответствовать интерфейсу абстракции; на самом деле эти два интерфейса могут быть совершенно разными. Обычно интерфейс реализации предоставляет только примитивные операции, а абстракция определяет операции более высокого уровня на основе этих примитивов.
- ConcreteImplementor: реализует интерфейс разработчика и определяет его конкретную реализацию.
public class Main { public static void main(String[] args) { Abstraction ab = new RefinedAbstraction(); ab.implementor = new ConcreteImplementorA(); ab.operation(); ab.implementor = new ConcreteImplementorB(); ab.operation(); } } public class Abstraction { protected Implementor implementor; public void setImplementor(Implementor implementor) { this.implementor = implementor; } public void operation() { implementor.operation(); } } public interface Implementor { public void operation(); } public class RefinedAbstraction extends Abstraction { @Override public void operation() { implementor.operation(); } } public class ConcreteImplementorA implements Implementor { @Override public void operation() { System.out.println("ConcreteImplementorA Operation"); } } public class ConcreteImplementorB implements Implementor { @Override public void operation() { System.out.println("ConcreteImplementorB Operation"); } }
ConcreteImplementorA Operation ConcreteImplementorB Operation
eidherjulian61/дизайн-шаблоны
Основные шаблоны Проектирования
ид ・ 27 сентября ・ 1 минута чтения
Оригинал: “https://dev.to/eidher/bridge-pattern-3og5”