CĂN BẢN
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

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

Trong bài viết này mình sẽ giới thiệu đến các bạn Command Design Pattern trong C# - Cách triển khai và ví dụ. Đây là một pattern thuộc nhóm Behavioral Design Pattern trong C#.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Chúng ta sẽ cùng nhau tìm hiểu về Command Design Pattern là gì? Cách triển khai trong C# và một vài ví dụ cụ thể về nó.

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.

Bài viết này được đăng tại [free tuts .net]

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

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 Freetuts.net");
            Console.ReadKey();
        }
    }
}

Kết quả:

command 02 png

Như vậy là chúng ta đã cùng nhau tìm hiểu về Command Design Pattern trong C# - Cách triển khai và ví dụ cụ thể về nó. Ở bài viết tiếp theo mình sẽ giới thiệu đến các bạn Visitor Design Pattern trong C#.

Cùng chuyên mục:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Trong bài viết này Freetuts chia sẽ cho các bạn một ứng dụng khá thú…

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

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

Chúng ta sẽ tìm hiểu về Factory Design Pattern trong C# là gì? Cách triển…

Hướng dẫn giải phương trình bậc hai trong C#

Hướng dẫn giải phương trình bậc hai trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Cách nối hai mảng trong C# bằng hai cách khác nhau

Cách nối hai mảng trong C# bằng hai cách khác nhau

Top