Sobes.tech
Назад к вопросам
Junior — Middle
64

Можешь назвать основные способы реализации популярных паттернов проектирования?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

Основные способы реализации популярных паттернов проектирования в Java:

  • Singleton (Одиночка): класс с приватным конструктором и статическим методом для получения единственного экземпляра.
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
  • Factory Method (Фабричный метод): определяет интерфейс для создания объекта, позволяя подклассам изменять тип создаваемого объекта.
public interface Product {}

public class ConcreteProduct implements Product {}

public abstract class Creator {
    public abstract Product factoryMethod();
}

public class ConcreteCreator extends Creator {
    public Product factoryMethod() {
        return new ConcreteProduct();
    }
}
  • Observer (Наблюдатель): объект (наблюдатель) подписывается на события другого объекта (субъекта) и получает уведомления об изменениях.
public interface Observer {
    void update();
}

public class Subject {
    private List<Observer> observers = new ArrayList<>();

    public void attach(Observer o) { observers.add(o); }
    public void notifyObservers() {
        for (Observer o : observers) {
            o.update();
        }
    }
}
  • Decorator (Декоратор): динамически добавляет объектам новые обязанности, оборачивая их.
public interface Component {
    void operation();
}

public class ConcreteComponent implements Component {
    public void operation() { System.out.println("Основная операция"); }
}

public class Decorator implements Component {
    protected Component component;
    public Decorator(Component c) { this.component = c; }
    public void operation() {
        component.operation();
    }
}

public class ConcreteDecorator extends Decorator {
    public ConcreteDecorator(Component c) { super(c); }
    public void operation() {
        super.operation();
        System.out.println("Дополнительное поведение");
    }
}

Это лишь несколько примеров, но в Java большинство паттернов реализуются через интерфейсы, абстрактные классы и композицию.