/Design-Patterns-in-Python

A collection of popular design patterns implemented in Python programming language

Primary LanguagePython

الگوهای طراحی در پایتون چیست؟

الگوهای طراحی راهکارهای قابل استفاده مجدد برای مشکلات متداولی هستند که در طراحی و توسعه نرم‌افزار به وجود می‌آیند. آنها بهترین شیوه‌ها و الگوهایی را فراهم می‌کنند که به ساختار، سازماندهی و قابلیت حفظ کد کمک می‌کنند. پایتون به عنوان یک زبان برنامه‌نویسی قدرتمند و چندمنظوره، از استفاده از الگوهای طراحی به طرز چشمگیری بهره می‌برد.

الگوهای طراحی به سه دسته اصلی تقسیم می‌شوند: الگوهای ساختاری، ایجادی و رفتاری. من به طور خلاصه برخی از الگوهای طراحی متداول در پایتون را معرفی می‌کنم:

الگوهای ایجادی:

Singleton (تک‌نمونه): اطمینان حاصل می‌کند که یک کلاس فقط یک نمونه دارد و یک نقطه دسترسی جهانی به آن ارائه می‌دهد.

Factory Method (متد کارخانه): واسطی برای ایجاد اشیاء ارائه می‌دهد اما به زیرکلاس‌ها اجازه می‌دهد نوع اشیاءی که ایجاد می‌شود را تغییر دهند.

Abstract Factory (کارخانه انتزاعی): واسطی برای ایجاد خانواده‌هایی از اشیاء مرتبط یا وابسته ارائه می‌دهد بدون اشاره به کلاس‌های مشخص آنها.

Builder (سازنده): ساخت یک شیء پیچیده را از نمایندگی آن جدا می‌کند، به این ترتیب این فرآیند ساخت یک نمایش متفاوت را ممکن می‌کند. الگوهای ساختاری:

Adapter (تطبیق‌گر): به اشیاء با واسط‌های ناسازگار اجازه می‌دهد با یکدیگر کار کنند.

Decorator (تزئین‌گر): به طور پویا ویژگی‌ها را به اشیاء اضافه می‌کند بدون تغییر کلاس آنها.

Facade (فاساد): یک واسط ساده‌تر به مجموعه‌ای از واسط‌ها در یک زیرسیستم ارائه می‌دهد.

Proxy (نماینده): برای دسترسی به یک شیء دیگر کنترل دسترسی را فراهم می‌کند. الگوهای رفتاری:

Observer (مشاهده‌گر): وابستگی یک به چندین میان اشیاء را تعریف می‌کند، به گونه‌ای که هنگامی که یک شیء وضعیت خود را تغییر می‌دهد، تمام وابستگان به طور خودکار مطلع و به‌روز می‌شوند.

Strategy (استراتژی): خانواده‌ای از الگوریتم‌ها را تعریف می‌کند، هر یک را بسته‌بندی می‌کند و قابلیت جابجایی آنها را فراهم می‌کند.

Command (فرمان): یک درخواست را به یک شیء مستقل تبدیل می‌کند که تمام اطلاعات درباره درخواست را حاوی است.

Template Method (متد الگو): ساختار برنامه را در یک کلاس پدر تعریف می‌کند اما اجازه می‌دهد که زیرکلاس‌ها مراحل مشخصی از الگوریتم را با تغییر ساختار آن تغییر دهند.