|
3 years ago | |
---|---|---|
Architecture | 12 years ago | |
Behavioural | 12 years ago | |
Creational | 3 years ago | |
Design-Patterns.wiki @ 8e801876b4 | 12 years ago | |
Structural | 12 years ago | |
.gitignore | 12 years ago | |
.gitmodules | 12 years ago | |
README.md | 12 years ago |
ما میخواهیم مجموعهٔ به-روز و کاملی از الگوهای طراحی را ایجاد کنیم. مجموعهای که شامل مثالهای متنوع و کاربردی از تمام زبانهای برنامهنویسی باشد.
برای شروع به همکاری
Abstract Factory: بدون مشخص کردن کلاسهای کانکرت، واسطی برای ساخت خانوادهای از اشیاء وابسته یا مرتبط با یکدیگر فراهم میکند.
Builder: روند ساخت یک شیء پیچیده را از نمایش آن جدا میکند به طوری که یک روند ساخت مشترک میتواند برای ساخت انوع بازنماییها به کار گرفته شود.
Factory Method: واسطی برای ساخت اشیاء ایجاد میکند، اما به زیرکلاسها اجازه میدهد که تصمیم بگیرند که چه کلاسی را نمونهسازی کنند. این الگو اجازه میدهد تا نمونهبرداری کلاس، به زیرکلاسها معوق شود.
Prototype: انواع اشیائی که باید ساخته شوند را با استفاده از یک نمونهٔ اولیه، مشخص میکند و اشیاء جدید را با کپی کردن این نمونهٔ اولیه تولید میکند.
Singleton: تضمین میکند که کلاس تنها یک نمونه داشته باشد و دسترسی سراسری برای آن فراهم میکند.
Adapter: یک واسط را به واسط مورد نظر کلاینت تبدیل میکند و اجازه میدهد تا کلاسها با اینترفیسهای متفاوت و ناسازگار با یکدیگر کار کنند.
Bridge: لایهٔ انتزاع را از لایهٔ پیادهسازی جدا میکند، بنابراین دو کلاس میتوانند مستقلاً تغییر کنند.
Composite: اشیاء را درون ساختار درختی ترکیب میکند تا سسله-مراتب جز-کل را ارائه کند. الگوی کامپوزت به کارخواهها اجازه میدهد تا با اشیاء تکی و با اشیائی که ترکیبی از اشیاء هستند، به یک صورت رفتار کند.
Decorator: وظایف و قابلیتهای بیشتری را به صورت داینامیک به شیء اضافه میکند. دکوریتورها برای توسعهٔ رفتارها و قابلیتها روش انعطافپذیر جایزینی را به جای زیرکلاسسازی ارائه میدهند.
Facade: واسط یکپارچهای را برای مجموعهای از واسطها در زیر سیستم، ارائه میدهد. این الگو واسط سطح-بالاتری را تعریف میکند که استفاده از زیرسیستم را سادهتر میکند.
Flyweight: استفادهٔ دوبارهٔ بسیاری از اشیاء fine-grain را با اشتراک آنها در سیستم، آسان میکند.
Proxy: برای کنترل دسترسی به اشیاء، نماینده یا نگهدارندهای برای آنها ارائه میکند.
Chain Of Responsibility: با دادن بیشتر از یک شیء برای هندل کردن درخواست از جفتگری (کوپلینگ) فرستندهٔ درخواست و گیرندهٔ درخواست اجتناب میکند. اشیاء گیرنده را زنجیر میکند و درخواست را در امتداد زنجیر گذر میدهد تا زمانی که یکی از اشیاء آن را هندل کند.
Command: درخواست را به عنوان یک شیء کپسوله میکند، از این رو اجازه میدهد تا بتوانید کارخوهها را با درخواستها، صفها و یا لاگهای متفاوت پارامتری کنید.
Interpreter: یک بازنمایی برای گرامر زبان داده شده تعریف میکند و مفسر توسط این باز نمایی، جملات زبان را تفسیر می کند.
Iterator: روشی برای دستری به عناصر یک شیء اگریگیت فراهم میکند بدون اینکه اصول پیادهسازی و ساختمان دادهٔ لایهٔ زیرین اگریگیت را نمایش دهد.
Mediator: شیءای را تعریف میکند که نحوهٔ ارتباط بین مجوعهای از اشیاء را کپسوله میکند. این الگو با جلوگیری ارتباط صریح بین اشیاء از جفتگری ضعیف (loose coupling) پشتیبانی میکند.
Memento: بدون تخلف از کپسولهسازی، وضعیت داخلی شیء ضبط و استخراج میکند از این رو شیء بعداً میتواند به این حالت برگردد.
Observer: وابستگی یک-به-چند بین اشیاء تعریف میکند بنابراین وقتی یک شیء وضعیتاش را تغییر میدهد، تمامی اشیاء وابسته به آن از آن تغییر مطلع شده و به صورت خودکار به روز میشوند.
State: به شیء این اجازه را میدهد که وقتی وضعیت درونیاش تغییر کرد، رفتارش را تغییر دهد. به نظر میرسد که شیء کلاس خود را عوض میکند.
Strategy: خانوادهای از الگوریتم ها را تعریف میکند، هر یک را کپسوله میکند و آنها را جابهجا پذیر میکند. الگوی استراتژی اجازه میدهد که الگوریتمها مستقل از کارخواهی که از آنها استفاده میکند، تغییر کنند.
Template Method: استخوانبندی و شالودهٔ اصلی عملیات الگوریتم را تعریف میکند، و پیادهسازی هر مرحله را به زیرکلاسها میسپارد. این الگو، به زیرکلاسها این اختیار را میدهد که تا خودشان، مراحل الگوریتم را پیاده کنند بدون اینکه ساختار الگوریتم را تغییر دهند.
Visitor: اعمالی که باید روی عناصری از شیء اجرا شود را ارائه میکند. این الگو اجازه را میدهد تا اعمال جدیدی تعریف کنید بدون اینکه کلاسهایی که این اعمال روی آنها انجام میشود را تغییر دهید.