patterns
Паттерны проектирования в современной разработке
Обзор ключевых паттернов проектирования и их применение
•
#patterns
#design
#best-practices
Паттерны проектирования в современной разработке
Паттерны проектирования — это проверенные решения типичных проблем, возникающих при разработке программного обеспечения.
Порождающие паттерны
Singleton
Гарантирует, что класс имеет только один экземпляр:
class DatabaseConnection {
private static instance: DatabaseConnection;
private constructor() {
// Инициализация соединения
}
static getInstance(): DatabaseConnection {
if (!DatabaseConnection.instance) {
DatabaseConnection.instance = new DatabaseConnection();
}
return DatabaseConnection.instance;
}
}
Factory Method
Определяет интерфейс для создания объектов:
interface Logger {
log(message: string): void;
}
class ConsoleLogger implements Logger {
log(message: string) {
console.log(message);
}
}
class FileLogger implements Logger {
log(message: string) {
// Запись в файл
}
}
class LoggerFactory {
createLogger(type: 'console' | 'file'): Logger {
switch (type) {
case 'console':
return new ConsoleLogger();
case 'file':
return new FileLogger();
}
}
}
Структурные паттерны
Adapter
Позволяет объектам с несовместимыми интерфейсами работать вместе:
// Старый интерфейс
class OldPaymentSystem {
processPayment(amount: number) {
console.log(`Processing ${amount} via old system`);
}
}
// Новый интерфейс
interface NewPaymentSystem {
pay(amount: number, currency: string): void;
}
// Адаптер
class PaymentAdapter implements NewPaymentSystem {
constructor(private oldSystem: OldPaymentSystem) {}
pay(amount: number, currency: string) {
// Конвертация и адаптация
this.oldSystem.processPayment(amount);
}
}
Поведенческие паттерны
Observer
Определяет зависимость один-ко-многим между объектами:
interface Observer {
update(data: any): void;
}
class Subject {
private observers: Observer[] = [];
attach(observer: Observer) {
this.observers.push(observer);
}
notify(data: any) {
this.observers.forEach(observer => observer.update(data));
}
}
Применение в современной разработке
Паттерны проектирования остаются актуальными и в современной разработке:
- React Hooks — реализация паттерна Observer
- Dependency Injection — паттерн Inversion of Control
- Middleware — паттерн Chain of Responsibility
Заключение
Знание паттернов проектирования помогает писать более чистый, поддерживаемый и масштабируемый код.