Table of Contents
ویرایشگرهای گرافیکی مانند فتوشاپ، GIMP و بسیاری از برنامه های طراحی به شدت به قابلیت های غیر قابل اجرا و قرمز برای افزایش تجربه کاربر متکی هستند. پیاده سازی این ویژگی ها می تواند به طور موثر چالش برانگیز باشد، به ویژه هنگامی که با عملیات پیچیده سروکار دارد.یک الگوی طراحی موثر برای مدیریت اقدامات غیر / انجام شده الگوی فرماندهی است.
درک الگوی فرماندهی
الگوی فرماندهی یک درخواست را به عنوان یک شیء قرار می دهد که اجازه می دهد تا پارامتری از مشتریان با صف، درخواست ها و عملیات را به کار گیرد.این شی را جدا می کند که از عملیاتی که می داند چگونه آن را انجام دهد، استفاده می کند.
اجرای Undo/Redo با الگوی فرماندهی
در یک ویرایشگر گرافیکی، هر یک از کاربران مانند ترسیم یک خط، استفاده از فیلتر یا حرکت یک شی می تواند به عنوان یک شیء فرمان نشان داده شود.هر دستور یک رابط را با روش هایی مانند execute() اجرا می کند و undo] هنگامی که کاربر یک عمل را انجام می دهد، یک دستور ذخیره شده در تاریخ اجرا می شود.
برای خنثی کردن یک عمل، برنامه آخرین فرمان را از پشته تاریخ می گیرد و آن را (FLT:0undo) ( متد، به قرمزو، دستور دوباره اجرا می شود و به پشته خنثی می شود.این روش اجازه می دهد تا یک راه تمیز و قابل نگهداری برای مدیریت اقدامات کاربر.
مثال های Workflow
- کاربر یک عمل را انجام می دهد، مانند نقاشی یک شکل.
- سیستم یک فرمان متناظر ایجاد می کند.
- در این میان، نام و روش تغییر و تغییر آن را می توان به آن اشاره کرد.
- این فرمان در پشته ی خنثی ذخیره می شود.
- هنگامی که سیستم عامل نهایی را به کار می برد، سیستم آخرین فرمان را دریافت می کند و به آن می گوید: (۰)
- اگر به آن نیاز داشته باشید، دستور (FLT:0) ( متد دوباره نامیده می شود و عمل را بازسازی می کند.
مزایای استفاده از الگوی فرماندهی
- طراحی قراردادی: هر دستور منطق خود را در خود جای می دهد.
- آسان برای گسترش: دستورات جدید را می توان بدون تغییر کد موجود اضافه کرد.
- مدیریت شفاف و غیر شفاف: سابقه ای از اقدامات را حفظ کنید.
- پشتیبانی از عملیات پیچیده: دستورات کامپوزیت می توانند اقدامات متعدد را گروه بندی کنند.
در نتیجه، الگوی فرماندهی یک چارچوب قوی و انعطاف پذیر برای اجرای ویژگی های خنثی و قرمز در ویرایشگرهای گرافیکی فراهم می کند.با دستکاری اقدامات به عنوان اشیاء، توسعه دهندگان می توانند برنامه های قابل نگهداری و مقیاس پذیر تری ایجاد کنند که تجربه کاربر را افزایش می دهد.