معرفی دیزاین پترن های php

  • خانه
  • معرفی دیزاین پترن های php
Image تحقیقات

معرفی دیزاین پترن های php

سلام و درود

در این قسمت به معرفی خلاصه ای از دیزاین پترن ها می پردازیم :

دیزاین پترن ها چی هستند ؟

دیزاین پترن‌ها (design pattern) یه راه حل بهینه و قایل استفاده مجدد برای مسایل برنامه نویسی هستند که ما همه روزه باهاش سرکار داریم . دیزاین پترن  (design pattern) یه کلاس یا کتابخانه نیست که ما به پروژمون اضافه کنیم , و خیلی بیشتر از اینهاست . یه قالب هست که باید تو شرایط درست به کار بگیریم. به زیان برنامه نویسی هم به کار میگرید اصلا ربط نداره . یه دیزاین پترن (design pattern)  خوب باید تو خیلی از زبانهای برنامه نویسی و الیته نه همه قابل استفاده باشه البته به قابلیت‌های زبانتون هم وابسته هست. دیزاین پترن (design pattern) مثل یه شمشیر دو لبه هست , آگه تو جای اشتباهی به کار گرفته بشه ممکنه خیلی مشکلات واستون پیش بیاره ولی در عوض تو جای درست و زمان درست میتونه نجات دهندتون هم باشه.

 

سه تا دیزاین پترن پایه وجود داره :

۱- structural ( ساختاری )

۲- creational ( اینو نتونستم فارسی چیزی پیدا کنم گفتم بنویسم خلقتی دیدم نمیشه، ساختنی بازم نمیشه , اگه چیزی یافتید بگید جایگزین کنم من فعلا از آفرینشی استفاده میکنم تو ادامه پست)

۳- behavioral ( رفتاری )

 

creational

Abstract Factory: بدون مشخص کردن کلاس‌های کانکرت، واسطی برای ساخت خانواده‌ای از اشیاء وابسته یا مرتبط با یکدیگر فراهم می‌کند.

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

Factory Method: واسطی برای ساخت اشیاء ایجاد می‌کند، اما به زیرکلاس‌ها اجازه می‌دهد که تصمیم بگیرند که چه کلاسی را نمونه‌سازی کنند. این الگو اجازه می‌دهد تا نمونه‌برداری کلاس، به زیرکلاس‌ها معوق شود.

Prototype: انواع اشیائی که باید ساخته شوند را با استفاده از یک نمونهٔ اولیه، مشخص می‌کند و اشیاء جدید را با کپی کردن این نمونهٔ اولیه تولید می‌کند.

Singleton: تضمین می‌کند که کلاس تنها یک نمونه داشته باشد و دسترسی سراسری برای آن فراهم می‌کند.

 

Structural Patterns

Adapter: یک واسط را به واسط مورد نظر کلاینت تبدیل می‌کند و اجازه می‌دهد تا کلاس‌ها با اینترفیس‌های متفاوت و ناسازگار با یکدیگر کار کنند.

Bridge: لایهٔ انتزاع را از لایهٔ پیاده‌سازی جدا می‌کند، بنابراین دو کلاس می‌توانند مستقلاً تغییر کنند.

Composite: اشیاء را درون ساختار درختی ترکیب می‌کند تا سسله-مراتب جز-کل را ارائه کند. الگوی کامپوزت به کارخواه‌ها اجازه می‌دهد تا با اشیاء تکی و با اشیائی که ترکیبی از اشیاء هستند، به یک صورت رفتار کند.

Decorator: وظایف و قابلیت‌های بیشتری را به صورت داینامیک به شیء اضافه می‌کند. دکوریتورها برای توسعهٔ رفتارها و قابلیت‌ها روش انعطاف‌پذیر جایزینی را به جای زیرکلاس‌سازی ارائه می‌دهند.

Facade: واسط یکپارچه‌ای را برای مجموعه‌ای از واسط‌ها در زیر سیستم، ارائه می‌دهد. این الگو واسط سطح-بالاتری را تعریف می‌کند که استفاده از زیرسیستم را ساده‌تر می‌کند.

Flyweight: استفادهٔ دوبارهٔ بسیاری از اشیاء fine-grain را با اشتراک آن‌ها در سیستم، آسان می‌کند.

Proxy: برای کنترل دسترسی به اشیاء، نماینده یا نگهدارنده‌ای برای آن‌ها ارائه می‌کند.

 

Behavioural Patterns

Chain Of Responsibility: با دادن بیشتر از یک شیء برای هندل کردن درخواست از جفتگری (کوپلینگ) فرستندهٔ درخواست و گیرندهٔ درخواست اجتناب می‌کند. اشیاء گیرنده را زنجیر می‌کند و درخواست را در امتداد زنجیر گذر می‌دهد تا زمانی که یکی از اشیاء آن را هندل کند.

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

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

Iterator: روشی برای دستری به عناصر یک شیء اگریگیت فراهم می‌کند بدون اینکه اصول پیاده‌سازی و ساختمان دادهٔ لایهٔ زیرین اگریگیت را نمایش دهد.

Mediator: شیء‌ای را تعریف می‌کند که نحوهٔ ارتباط بین مجوعه‌ای از اشیاء را کپسوله می‌کند. این الگو با جلوگیری ارتباط صریح بین اشیاء از جفتگری ضعیف (loose coupling) پشتیبانی می‌کند.

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

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

State: به شیء این اجازه را می‌دهد که وقتی وضعیت درونی‌اش تغییر کرد، رفتارش را تغییر دهد. به نظر می‌رسد که شیء کلاس خود را عوض می‌کند.

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

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

Visitor: اعمالی که باید روی عناصری از شیء اجرا شود را ارائه می‌کند. این الگو اجازه را می‌دهد تا اعمال جدیدی تعریف کنید بدون اینکه کلاس‌هایی که این اعمال روی آن‌ها انجام می‌شود را تغییر دهید.