آموزش الگوی طراحی(Design Pattern)پترن فرمان (Command Pattern)
186 بار بازدید -
3 سال پیش
-
پترن فرمان(Command Pattern) - الگوی
پترن فرمان(Command Pattern) - الگوی طراحی
آموزش الگوی طراحی(Design Pattern)پترن فرمان (Command Pattern)
الگوهای طراحی(Design patterns) دیزاین پترن .
تعریف الگوی فرمان (Command Pattern): گاهی در برنامهها به قابلیت Undo، Redo نیاز داریم. در این حالت باید سابقهی کارهایی را که کاربر انجام میدهد، نگهداری کنیم تا بتوانیم براساس آنها عمل Undo یا Redo انجام داده و با نگهداری دائمی این سابقه، قابلیت اسکریپتنویسی فراهم کنیم.
نگهداری سابقه کارهایی که کاربر انجام میدهد در وهلهی نخست کار سختی است. زیرا هر عملی که کاربر انجام میدهد، اجرای تکه کدی را به همراه دارد که ممکن است حاوی انواع و اقسام دستورهای مختلف باشد.
بهترین راه برای پاسخگویی به چنین سناریویی این است که به ازای هر عملی که در برنامه میتواند انجام شود یک کلاس تعریف کنیم و تکه کد مربوط به آن را درون کلاس آن بگنجانیم. یعنی به جای این که کد هر چیزی ر بهطور بینظم درون برنامه پراکنده کنیم، آنها را داخل کلاسهای مختلف بستهبندی کنیم. سپس به ازای هر فرمانی که کاربر میتواند صادر کند از این کلاسها نمونه ایجاد کرده و آن را اجرا کنیم. بدین ترتیب افزون بر برآورده شدن مقصود برنامه میتوانیم با نگهداری اشیا فرمان ، سابقهی کارهایی که کاربر انجام داده را نیز نگهداری کنیم. به این کلاسها Command گفته میشود.
نکتهای که اینجا وجود دارد این است که طبق این مدل، کلاسهای Command مستقل از محل استفادهی خود هستند. یعنی هرکسی میتواند آن را ایجاد یا اجرا کند.
ارزشمندی الگوی Command این است که هر بخش از برنامه که یک شی Commad دریافت میکند، داخل آن شی برایش مهم نیست و فقط متد Execute() آن را صدا میزند تا فرمان اجرا شود. همچنین چون فرمانها شی هستند، میتوان آنها را نگهداری کرد و صفی از فرمانها تشکیل داد و به این ترتیب قابلیت Redo و Undo را به برنامه افزود .
بنابر گفتهGoF هدف از الگوی Command عبارت است از:
"يک درخواست را بهصورت يک شي کپسوله ميکند. بنابراين اين امکان را فراهم ميآورد تا مشتريها را با درخواستهاي متفاوت پارامتردهي کرده، درخواستها را صفبندی کرده و اعمال قابل برگشت فراهم کنيد."
نقش کلاسها :
• Command :
ارائه واسط یا کلاس مجرد یکه ساختار کلی فرمانها را تعریف میکند.
• ConcreteCommand :
واسط Command را پیادهسازی کرده و هر کدام آنها معادل یک فرمان در برنامه است. هریک از این کلاسها مشخصات درخواست، وضعیت برنامه و گیرندهی واقعی درخواست را در خود (دروی فیلد state و receiver) نگهداری میکند.
• Client :
کسی است که اشیا Command را ایجاد میکند.
• Invoker :
دستور اجراي Command را در زمان مناسب صادر ميکند. معمولا ليست Command ها را جهت اجرا نگهداري مينمايد. بهطور کلي وظيفه ی آن مديريت اجراي Command ها است.
• Receiver :
میداند که چطور عملی که به آن توسط درخواستی ارتباط داده میشود را اجرا کند.
هدف این الگو: قرار دادن درخواستها در یک شی که اجازه میدهد کلاینت درخواستهای گوناگون داشته باشد و همچنین ایجاد صفی از درخواستها و پشتیبانی از عمل Undo.
مزایای این الگو :
• امکان دارد که یک Command از Receiverهای مختلف استفاده کند.
• مستقل کردن فرمان از کسی که فرمان را اجرا میکند.
• دستورات جدید میتوانند به مجموعه ما اضافه شوند بدون این که خللی در کار دستورات قبلی به وجود آورند.
معایب این الگو :
• تعریف برخی از گونههای فرمان ترکیبی ساده نیست.
چگونه برنامه نویسی را شروع کنیم ؟ -هیلتن
دانلود کامل این پکیچ از وبسایت. www.heilton.com/
لطفا در کانال یوتیوب ماهم عضو شوید : 👇👇👇👇👇👇👇👇
/ @گروهنرمافزاریهیلتن
اگه خواستید به کانال تلگرامی ما هم یه سری بزنید : t.me/HeiltonProgramming
و هم چنین گروه تلگرامی ما :t.me/joinchat/VnroNrh2Qglqse8h
3 سال پیش
در تاریخ 1400/04/09 منتشر شده
است.
186
بـار بازدید شده