XLII : Command Design Pattern trong C# - Cách triển khai và ví dụ

Ngày đăng: 2023-05-06 05:33:14

Mục lục

1.Command Design Pattern trong C# là gì?

Command Design Pattern được sử dụng để đóng gói một yêu cầu dưới dạng một đối tượng và chuyển cho người gọi nó.

Trong đó người gọi biết cách thực hiện yêu cầu nhưng sử dụng command được đóng gói để thực hiện một hành động.

command 01 png

Ví dụ: Để hiểu rõ hơn về Command Design Pattern, mình sẽ lấy ví dụ trong nhà hàng.

Trong một nhà hàng ta có người phục vụ, đầu bếp. Người phục vụ sẽ nhận đơn hàng từ khách hàng và chuyển đến cho đầu bếp. Đầu bếp sẽ nấu những món ăn đó và chuyển lại cho phục vụ rồi phục vụ đưa cho khách hàng.

Trong đó:

  • Client: là khách hàng.
  • Command: Hành động gọi món.
  • Invoker: Người phục vụ.

2.Cách triển khai và ví dụ về Command Design Pattern trong C#

Trong phần này mình sẽ thực hiện triển khai Command Design Pattern trong C# thông qua một ví dụ cụ thể. Các bạn hãy xem qua các bước mình thực hiện nhé !

Bước 1: Tạo class Document.

Trong class có ba phương thức: Open()Save()Close() tương ứng với nhiệm vụ của nó.

Document.cs

using System;

using System.Collections.Generic;

using System.Text;

 

namespace CommandDesignPattern

{

    public class Document

    {

        public void Open()

        {

            Console.WriteLine("Document Opened");

        }

        public void Save()

        {

            Console.WriteLine("Document Saved");

        }

        public void Close()

        {

            Console.WriteLine("Document Closed");

        }

    }

}

Bước 2: Tạo interface ICommand.

Trong class này ta khai báo một phương thức Excute() được sử dụng để thực thi một command.

ICommand.cs

using System;

using System.Collections.Generic;

using System.Text;

 

namespace CommandDesignPattern

{

    public interface ICommand

    {

        void Execute();

    }

}

Bước 3: Tạo các command Open, Save, Close.

OpenCommand.cs

using System;

using System.Collections.Generic;

using System.Text;

 

namespace CommandDesignPattern

{

    public class OpenCommand : ICommand

    {

        private Document document;

        public OpenCommand(Document doc)

        {

            document = doc;

        }

        public void Execute()

        {

            document.Open();

        }

    }

}

SaveCommand.cs

using System;

using System.Collections.Generic;

using System.Text;

 

namespace CommandDesignPattern

{

    class SaveCommand : ICommand

    {

        private Document document;

        public SaveCommand(Document doc)

        {

            document = doc;

        }

        public void Execute()

        {

            document.Save();

        }

    }

}

CloseCommand.cs

using System;

using System.Collections.Generic;

using System.Text;

 

namespace CommandDesignPattern

{

    class CloseCommand : ICommand

    {

        private Document document;

        public CloseCommand(Document doc)

        {

            document = doc;

        }

        public void Execute()

        {

            document.Close();

        }

    }

}

Bước 4: Tạo class MenuOptions.

Trong class thực hiện gọi phương thức Excute() để thực thi command.

MenuOptions.cs

using System;

using System.Collections.Generic;

using System.Text;

 

namespace CommandDesignPattern

{

    public class MenuOptions

    {

        private ICommand openCommand;

        private ICommand saveCommand;

        private ICommand closeCommand;

        public MenuOptions(ICommand open, ICommand save, ICommand close)

        {

            this.openCommand = open;

            this.saveCommand = save;

            this.closeCommand = close;

        }

        public void clickOpen()

        {

            openCommand.Execute();

        }

        public void clickSave()

        {

            saveCommand.Execute();

        }

        public void clickClose()

        {

            closeCommand.Execute();

        }

    }

}

Bước 5: Tạo class Program để chạy chương trình và kiểm tra kết quả.

Program.cs

using System;

 

namespace CommandDesignPattern

{

    class Program

    {

        static void Main(string[] args)

        {

            Document document = new Document();

            ICommand openCommand = new OpenCommand(document);

            ICommand saveCommand = new SaveCommand(document);

            ICommand closeCommand = new CloseCommand(document);

            MenuOptions menu = new MenuOptions(openCommand, saveCommand, closeCommand);

            menu.clickOpen();

            menu.clickSave();

            menu.clickClose();

 

            Console.WriteLine("\n----------------------------------");

            Console.WriteLine("Chuong trinh nay duoc dang tai thuanhoaonline.com");

            Console.ReadKey();

        }

    }

}

 

Về bài trước...

                                  Bài tiếp theo...


Tài liệu lập trình C#

Bài viết trong cùng chuyên mục

Góc games giải trí



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Tower game

Plapy Bird (NH.Đông)

Vượt chướng ngại vật



0379136392

Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   -:

Trả lời

 +   -:

Trả lời

12592