Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Объектно-ориентированное программирование в Node.js
Да, я регулярно применяю принципы ООП в разработке на Node.js Backend. Это один из фундаментальных подходов к архитектуре современных приложений.
Основные концепции ООП
В Node.js я использую классы и объекты для моделирования сущностей предметной области. Например:
class User {
private id: string;
private email: string;
private role: 'admin' | 'user';
constructor(id: string, email: string, role: 'admin' | 'user' = 'user') {
this.id = id;
this.email = email;
this.role = role;
}
public isAdmin(): boolean {
return this.role === 'admin';
}
public getEmail(): string {
return this.email;
}
}
const user = new User('123', 'test@example.com', 'user');
console.log(user.isAdmin()); // false
Наследование и полиморфизм
Часто применяю наследование для создания иерархии классов:
class Employee {
protected name: string;
protected salary: number;
constructor(name: string, salary: number) {
this.name = name;
this.salary = salary;
}
public calculateBonus(): number {
return this.salary * 0.1;
}
}
class Manager extends Employee {
private teamSize: number;
constructor(name: string, salary: number, teamSize: number) {
super(name, salary);
this.teamSize = teamSize;
}
public calculateBonus(): number {
return this.salary * 0.15 + this.teamSize * 100;
}
}
Инкапсуляция
Использую приватные поля для защиты внутреннего состояния:
class BankAccount {
private balance: number = 0;
public deposit(amount: number): void {
if (amount > 0) {
this.balance += amount;
}
}
public getBalance(): number {
return this.balance;
}
}
Интерфейсы и абстрактные классы
В проектах применяю интерфейсы для определения контрактов:
interface ILogger {
log(message: string): void;
error(message: string): void;
}
class ConsoleLogger implements ILogger {
log(message: string): void {
console.log(`[LOG] ${message}`);
}
error(message: string): void {
console.error(`[ERROR] ${message}`);
}
}
Практическое применение в архитектуре
В реальных проектах я применяю SOLID-принципы, которые опираются на ООП:
- Single Responsibility — каждый класс отвечает за одно
- Open/Closed — открыт для расширения, закрыт для модификации
- Liskov Substitution — подтипы должны заменять базовые типы
- Interface Segregation — много специфичных интерфейсов лучше одного большого
- Dependency Inversion — зависимости от абстракций, а не реализаций
ООП позволяет писать масштабируемый, поддерживаемый и тестируемый код.