Date of posting:  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...


Progamming documentation C#

Articles in the same category

Entertainment game corner(play live on the web) Login (play for reward)Instructions for playing and receiving rewward



caro


Butterfly


FlipFlop

online chess

Tetris

Jigsaw

15_PUZZLE

Kill ghosts

Gamebird

Planet Defense

Tower game

Shoot the ball

Plapy Bird (NH.Đông)

Diablo

Gamedraw

Game Phases

fun and games

Fish shooting

Street Fight (Play on phone , tablet)

Street Fight (Play on compute and laptop)

Same pair of pictures



0379136392

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. 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

 +   KTT-0362497726:Ok! Mình rất thích trang web của bạn.

Trả lời

 +   HoangQuan-0985073641:Cần tạo nhiều game hay nữa em!

Trả lời

 *   Lê Thuyên-0379136391:HoangQuan0985073641--->Ok! Em cảm ơn anh ạ!

Trả lời

 +   L.Ngư-0906744578:Nghiên cứu tích hợp sàn giao dịch tiền ảo đi cu.

Trả lời

 *   Lê Thuyên-0379136392:L.Ngư0906744578--->Đang nghiên cứu Grandma.

Trả lời


Contact: Lê Văn Thuyên - phone: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Categories:


1156808