لطفا صبر کنید...
دیزاین پترن Command




Behavioral DESIGN PATTERNS

یکی از زیرشاخه های الگوهای طراحی، Behavioral Design Patterns است. تمرکز و وظیفه اصلی این دیزاین پترن ها تعامل اشیاء و جداسازی وظایف آن ها  از یکدیگر است.

Command Design Pattern

دیزاین پترن Command یکی از زیرشاخه های الگوهای طراحی از نوع Behavioral است.

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

سختش نکنیم! وقتی یک سری دستورات داریم که میخوایم یکدفعه با هم انجام بشه همه رو میدیم به یک متدی که اونها رو اجرا کنه.

میزان استفاده : متوسط رو به بالا

پیاده سازی دیزاین پترن Command

فرض کنید کلاسی به نام Stock داریم که میتوانیم آن را بخریم یا بفروشیم. این کلاس را به شکل زیر مینویسیم.

internal class Stock
    {
        public int Cnt { get; set; }
        public string Name { get; set; }

        public void Sell()
        {
            Console.WriteLine("Selling Order");
        }
        public void Buy()
        {
            Console.WriteLine("Buying Order");
        }
    }

یک اینترفیس هم داریم به نام IOrder که وقتی میخواهیم عملیاتی را انجام دهیم از متدی که در این اینترفیس وجود دارد استفاده میکنیم.

public interface IOrder
    {
        void Execute();
    }

حالا دو کلاس ایجاد میکنیم که از این IOrder ارث برده اند و جهت خرید و فروش Stock آنهارا مینویسیم.

internal class OrderSell : IOrder
    {
        private Stock stock;
        public OrderSell(Stock stock)
        {
            this.stock = stock;
        }
        public void Execute()
        {
            stock.Sell();
        }
    }
 internal class OrderBuy : IOrder
    {
        private Stock stock;
        public OrderBuy(Stock stock)
        {
            this.stock = stock;
        }
        public void Execute()
        {
            stock.Buy();
        }
    }

عملیات اصلی خرید و فروش در متد Execute پیاده سازی کردیم. چرا که برای ما که به عنوان یک فرمانده در این کدها هستیم تفاوتی بین کار ها وجود ندارد و فقط دستور اجرای دستورات را صادر میکنیم. این دستور در اینجا میتواند خرید یا فروش باشد.

حالا نوبت به این میرسد که ما یک لیستی از دستورات را در محلی دریافت کنیم تا یکی یکی آن ها را انجام دهیم. این لیست را در کلاسی به نام OrderBroker مینویسیم.

 internal class OrderBroker
    {
        private List ordersList;
        public OrderBroker()
        {
            ordersList = new List();
        }

        public void AddOrder(IOrder order)
        {
            ordersList.Add(order);
        }

        public void PlaceOrders()
        {
            foreach (var item in ordersList)
            {
                item.Execute();
            }
            ordersList.Clear();
        }
    }

دیگر برای ما فرقی ندارد دستور چیست. ما لیستی از دستورات را از طریق متد AddOrder یکی یکی دریافت میکنیم و در لیستمان ذخیره میکنیم.

در نهایت هم با دستور PlaceOrder تک تک دستورات را اجرا میکنیم و در نهایت لیست دستورات را خالی میکنیم.

حال متد main را به این شکل مینویسیم.

 static void Main(string[] args)
        {
            try
            {
                OrderBroker broker = new OrderBroker();
                OrderBuy buy = new OrderBuy(new Stock() { Cnt = 10, Name = "Egg" });
                OrderSell sell = new OrderSell(new Stock() { Cnt = 5, Name = "Egg" });
                broker.AddOrder(buy);
                broker.AddOrder(sell);
                broker.PlaceOrders();
            }
            catch (Exception ex)
            {
                ShowError(ex.Message);
            }
            Console.ReadLine();
        }

ما در کد بالا به وسیله OrderBroker دو دستور خرید ۱۰ تخم مرغ و فروش. ۵ تخم مرغ را صادر کردیم و با PlaceOrder کردن همگی را با هم انجام دادیم.

برای آموزش رایگان در مورد انواع دیزاین پترن ها و معماری های نرم افزار می توانید به این آموزش مراجعه نمایید:

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

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

دیزاین پترن  در حقیقت راه حل مسائل طراحی نرم افزار هستند که بارها و بارها در دنیای توسعه نرم افزار تکرار میشوند. الگوهایی از طراحی قابل استفاده مجدد (reusable) و تعامل اشیاء.

هولوسن

با من یاد بگیر

آموزش های بیشتر در وبسایت هولوسن : https://holosen.net

نظرات
5.0
(0 نظر)
5
1
4
0
3
0
2
0
1
0
نظرات
**پرسش و پاسخ** سوال خود را مطرح کنید.
در کمتر از 10 دقیقه پاسخگوی شما هستیم

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی علامت گذاری شده اند *

امتیاز:
Captcha Image