الگوی طراحی در نود جی اس

Design pattern in Node.js

دیزاین پترن‌ها در نود جی اس با توجه به asynchronous  و event-driven بودن کاربرد خاص‌تری پیدا می‌کنند.

الگوی طراحی به پنج دسته تقسیم میشن الگوهای ایجاد (Creational Patterns) ، الگوهای ساختاری (Structural Patterns) ، الگوهای رفتاری (Behavioral Patterns) ، الگوهای همزمانی / عملکردی (Concurrency Patterns) و الگوهای معماری (Architectural Patterns) دسته ششم الگوهای Core

الگوهای ایجاد : برای ایجاد اشیاء به شیوه‌ای انعطاف‌پذیر و قابل گسترش کاربرد دارن مثل (Factory Singleton  Builder Prototype Prototype Dependency Injection (DI))

الگوهای ساختاری : برای سازمان‌دهی بهتر ساختار کلاس‌ها یا ماژول‌ها مثل (Adapter Decorator Facade Proxy Composite)

الگوهای رفتاری: نحوه تعامل بین اشیاء و مدیریت رفتار آن‌ها 
الگوهای همزمانی / عملکردی : مختص Node.js برای مدیریت async/non-blocking

1-Factory ساختن آبجکت‌ها بر اساس شرایط یا ورودی خاص
Singleton  تضمین وجود تنها یک نمونه از کلاس (مثلاً اتصال DB)
Builder ایجاد اشیاء پیچیده مرحله به مرحله
Prototype  کپی کردن نمونه اولیه (استفاده کمتر در Node)
Dependency Injection (DI)  تزریق وابستگی‌ها (در NestJS بسیار رایج است)

2-Adapter  یکپارچه‌سازی دو API ناسازگار (مثلاً تبدیل callback به Promise)
Decorator  افزودن رفتار به اشیاء بدون تغییر کلاس اصلی
Facade ساده‌سازی دسترسی به سیستم پیچیده (مثلاً wrapper ساده برای Redis)
Proxy افزودن کنترل دسترسی یا cache به عملیات (مثلاً API rate limit)
Composite  ساختاردهی اشیاء به صورت درختی (مثل منوها)

3-Observer  اطلاع‌رسانی به آبجکت‌ها هنگام تغییر (event emitters در Node)
Strategy تغییر رفتار کلاس در زمان اجرا (مثلاً الگوریتم احراز هویت)
Command بسته‌بندی درخواست‌ها به عنوان اشیاء (undo/redo)
Chain of Responsibility  پردازش زنجیره‌ای درخواست (مثلاً middleware در Express)
Mediator مدیریت ارتباط بین اجزا از طریق واسط مرکزی
State  تغییر رفتار آبجکت بر اساس وضعیت داخلی
Iterator پیمایش روی مجموعه‌ای از آیتم‌ها (Streams در Node)
Template Method اسکلت الگوریتم در کلاس پایه + پیاده‌سازی در کلاس فرزند

4-Callback Pattern سبک سنتی Node برای async (قدیمی‌تر)
Promise Pattern سبک مدرن‌تر برای async (زنجیره‌ی then/catch)
Async/Await ساده‌سازی کنترل جریان async (ES2017 به بعد)
EventEmitter Pattern مدل رویدادمحور (Built-in در Node)
Reactor Pattern الگوی اصلی در پشت پرده‌ی Event Loop
Pipeline Pattern پردازش مرحله‌ای داده‌ها (مثلاً در Streams)
Worker Pool / Thread Pool  استفاده از worker_threads یا child_process برای پردازش موازی

5-MVC (Model–View–Controller)  جداسازی concerns در وب اپلیکیشن‌ها
MVVM  بیشتر در فرانت‌اند، اما در SPA Backend هم کاربرد دارد
Hexagonal Architecture (Ports & Adapters)  ساختار تمیز با جداسازی منطق داخلی و بیرونی
Clean Architecture استفاده زیاد در NestJS و پروژه‌های مدرن
Microservices جدا کردن سیستم به سرویس‌های کوچک مستقل
Serverless  اجرای فانکشن‌ها به صورت جدا در سرویس‌های ابری
CQRS (Command Query Responsibility Segregation)  تفکیک عملیات خواندن و نوشتن
Event Sourcing ذخیره‌ی وضعیت با ثبت ایونت‌ها به جای وضعیت نهایی
6-Module Pattern (CommonJS / ES Modules)  الگوی ماژولار شدن در Node.js
Middleware Pattern  در فریمورک‌هایی مثل Express، Koa، NestJS 
Stream Pattern  پردازش داده‌ها در جریان (مثلاً فایل‌های حجیم)
Configuration Pattern مدیریت config در محیط‌های مختلف