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

Strategy 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 Strategy Design Pattern trong C# - Cách triển khai và ví dụ. Đây là một loại 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ề Strategy Design Pattern là gì? Cách triển khai trong C# và một vài ví dụ cụ thể về nó.

Strategy Design Pattern trong C# là gì?

Strategy Design Pattern được sử dụng để xác định một nhóm thuật toán, đóng gói từng thuật toán và làm cho chúng có thể hoán đổi cho nhau. Strategy cho phép thuật toán thay đổi độc lập với các clients sử dụng nó.

strategy 02 png

Nói một cách dễ hiểu hơn thì nó sẽ cùng cấp nhiều giải pháp cho chúng ta, để có thể chọn một giải pháp trong runtime.

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

Để hiểu rõ hơn cho lời giải thích trên, các bạn hãy xem qua sơ đồ dưới đây.

strategy 01 png

Trong sơ đồ trên, chúng ta có một Task (nhiệm vụ) và có ba Solution (giải pháp). Điều đó có nghĩa là sử dụng một trong ba giải pháp trên chúng ta có thể hoàn thành nhiệm vụ.

Theo Strategy Design Pattern, giải pháp nào nên được sử dụng sẽ do client xác định trong runtime. Vì vậy client có thể sử dụng giải pháp một, hai hoặc ba để đạt được nhiệm vụ trong runtime.

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

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

Bước 1: Tạo interface ICompression.

Class này khai báo một interface chung cho tất cả các thuật toán được hỗ trợ. Trong class định nghĩa phương thức CompressFolder().

ICompression.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace StrategyDesignPattern
{
    public interface ICompression
    {
        void CompressFolder(string compressedArchiveFileName);
    }
}

Bước 2: Tạo hai class RarCompression và ZipCompression.

RarCompression.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace StrategyDesignPattern
{
    public class RarCompression : ICompression
    {
        public void CompressFolder(string compressedArchiveFileName)
        {
            Console.WriteLine("Folder is compressed using Rar approach: '" + compressedArchiveFileName
                 + ".rar' file is created");
        }
    }
}
ZipCompression.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace StrategyDesignPattern
{
    public class ZipCompression : ICompression
    {
        public void CompressFolder(string compressedArchiveFileName)
        {
            Console.WriteLine("Folder is compressed using zip approach: '" + compressedArchiveFileName
                 + ".zip' file is created");
        }
    }
}

Bước 3: Tạo class CompressionContext.

Class này chứa một thuộc tính được sử dụng để giữ tham chiếu của một đối tượng Strategy. Thuộc tính này sẽ được clients đặt tại run-time theo thuật toán được yêu cầu.

CompressionContext.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace StrategyDesignPattern
{
    public class CompressionContext
    {
        private ICompression Compression;

        public CompressionContext(ICompression Compression)
        {
            this.Compression = Compression;
        }
        public void SetStrategy(ICompression Compression)
        {
            this.Compression = Compression;
        }
        public void CreateArchive(string compressedArchiveFileName)
        {
            Compression.CompressFolder(compressedArchiveFileName);
        }
    }
}

Bước 4: Tạo client.

Trong class này ta sẽ khởi tạo đối tượng ConpressionContext và truyền cho nó tên file. Sau đó chạy chương trình và kiểm tra kết quả.

Program.cs
using System;

namespace StrategyDesignPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            CompressionContext ctx = new CompressionContext(new ZipCompression());
            ctx.CreateArchive("Freetuts");
            ctx.SetStrategy(new RarCompression());
            ctx.CreateArchive("Freetuts");

            Console.WriteLine("\n-------------------------------------");
            Console.WriteLine("Chuong trinh nay duoc dang tai Freetuts.net");
            Console.Read();
            
        }
    }
}

Kết quả:

strategy 03 png

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

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ụ

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

Command 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