Ответ
Да, использовал паттерны из каталога Gang of Four (GoF). Они помогают решать типовые задачи проектирования, делая код более гибким, переиспользуемым и поддерживаемым.
Наиболее часто применяемые паттерны:
- Singleton (Одиночка): Для создания единственного экземпляра класса (например, подключения к базе данных, логгера).
- Factory (Фабрика): Для инкапсуляции логики создания объектов, не привязывая клиентский код к конкретным классам.
- Builder (Строитель): Для пошагового создания сложных объектов, отделяя конструирование от представления.
- Observer (Наблюдатель): Для реализации механизма подписки и уведомлений об изменениях состояния.
- Strategy (Стратегия): Для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости.
Пример Singleton на Java:
public class Database {
private static volatile Database instance;
private Database() {
// Инициализация подключения
}
public static Database getInstance() {
if (instance == null) {
synchronized (Database.class) {
if (instance == null) {
instance = new Database();
}
}
}
return instance;
}
}
Пример Factory на Java:
public interface Shape {
void draw();
}
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
public class ShapeFactory {
public Shape createShape(String type) {
if (type.equalsIgnoreCase("CIRCLE")) {
return new Circle();
}
// ... другие типы
throw new IllegalArgumentException("Unknown shape type: " + type);
}
}
// Использование
Shape shape = new ShapeFactory().createShape("CIRCLE");
shape.draw();