close up photo of programming of codes

codecungnhau.com

Một trang web về kỹ thuật lập trình

C# Design Patters: Adapter

Adapter là một mẫu thiết kế cấu trúc, cho phép các đối tượng không tương thích cộng tác.

Adapter hoạt động như một trình bao bọc giữa hai đối tượng. Nó bắt các lời gọi cho một đối tượng và chuyển đổi chúng sang định dạng và giao diện có thể nhận ra bởi đối tượng thứ hai.

Cách sử dụng mẫu

Sử dụng: Mẫu Adapter khá phổ biến trong chương trình C#. Nó rất thường được sử dụng trong các hệ thống dựa trên một số mã cũ. Trong những trường hợp như vậy, Adapter làm cho các mã cũ tương tác với các lớp hiện đại.

Nhận dạng: Adapter có thể nhận biết được bởi một phương thức khởi tạo lấy một thể hiện của một kiểu giao diện / trừu tượng khác. Khi adapter nhận được lời gọi đến bất kỳ phương thức nào của nó, nó sẽ dịch các tham số sang định dạng thích hợp và sau đó chuyển hướng lời gọi đến một hoặc một số phương thức của đối tượng được bao bọc.

Chương trình mẫu

Program.cs

using System;
namespace DesignPatterns.Adapter.Conceptual
{
    // Target xác định giao diện cụ thể được client sử dụng.
    public interface ITarget
    {
        string GetRequest();
    }
    // Adaptee chứa một số hành vi hữu ích, nhưng giao diện của nó không 
    // tương thích với client hiện có. Nó cần một số điều chỉnh trước khi 
    // client có thể sử dụng nó.
    class Adaptee
    {
        public string GetSpecificRequest()
        {
            return "Specific request.";
        }
    }
    // Adapter làm cho giao diện của Adaptee tương thích với giao diện 
    // của Target.
    class Adapter : ITarget
    {
        private readonly Adaptee _adaptee;
        public Adapter(Adaptee adaptee)
        {
            this._adaptee = adaptee;
        }
        public string GetRequest()
        {
            return $"This is '{this._adaptee.GetSpecificRequest()}'";
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Adaptee adaptee = new Adaptee();
            ITarget target = new Adapter(adaptee);
            Console.WriteLine("Adaptee interface is incompatible with the client.");
            Console.WriteLine("But with adapter client can call it's method.");
            Console.WriteLine(target.GetRequest());
        }
    }
}

Kết quả:

Adaptee interface is incompatible with the client.
But with adapter client can call it's method.
This is 'Specific request.'

Đã đăng vào

trong

,

bởi

Thẻ:

Bình luận

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *