Назад к вопросам
Aston
Junior — Middle
64
Можешь назвать основные способы реализации популярных паттернов проектирования?
Компании, где спрашивали
Ответ от нейросети
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 большинство паттернов реализуются через интерфейсы, абстрактные классы и композицию.