Thứ tự thực thi với mảng các các delegate

Một phần của tài liệu Ứng dụng Web với Web Forms_4 pptx (Trang 25 - 26)

Delegate có thể giúp ta xậy dựng một hệ thống cho phép người dùng có thể quyết

định một cách động trình tự thực thi các thao tác. Giả sử chúng ta có hệ thống sử lý

ảnh, hệ thống này có thể thao tác ảnh theo nhiều cách như: làm mờ (blur) ảnh, làm sắc nét, quay, lọc v.v…ảnh. Cũng giả sử rằng trình tự áp dụng các hiệu ứng trên ảnh hưởng lớn đến đến chất lượng của ảnh. Người dùng sẽ mong muốn chọn các hiệu

ứng họ lẫn trình tự của chúng từ một thực đơn, sau đó hệ thống sẽ thực hiện các hiệu ứng này theo trình tự họđã định.

Ta có thể tạo một delegate cho mỗi thao tác (hiệu ứng) và đẩy chúng vào một túi chứa có thứ tự, như một mảng chẳng hạn, theo đúng trình tự nó sẽ được thực thi. Khi tất cả các delegateđược tạo và thêm vào túi chứa, ta chỉđơn giản duyệt suốt mảng, gọi các delegate khi tới lượt.

Ta bắt đầu tạo lớp Image để đại diện cho một bức ảnh sẽ được xử lý bởi

ImageProcessor:

public class Image {

public Image( ) {

Console.WriteLine("An image created"); }

}

Lớp ImageProcessor khai báo một delegate không tham số và trả về kiểu

void

public delegate void DoEffect( );

Sau đó khai báo một số phương thức để thao tác ảnh có nguyên mẫu hàm như

delegateđã khai báo ở trên.

public static void Blur( ) {

Console.WriteLine("Blurring image"); }

public static void Filter( ) {

Console.WriteLine("Filtering image"); }

public static void Sharpen( ) {

Console.WriteLine("Sharpening image"); }

public static void Rotate( ) {

Console.WriteLine("Rotating image"); }

Lớp ImageProccessor cần một mảng để giữ các delegate người dùng chọn; một biến để giữ số lượng hiệu ứng muốn xử lý và hiển nhiên một bức ảnh image

DoEffect[] arrayOfEffects; Image image;

int numEffectsRegistered = 0;

ImageProccessor cũng cần một phương thức để thêm delegate vào mảng

public void AddToEffects(DoEffect theEffect) {

if (numEffectsRegistered >= 10) {

throw new Exception("Too many members in array"); }

arrayOfEffects[numEffectsRegistered++] = theEffect; }

Một phần của tài liệu Ứng dụng Web với Web Forms_4 pptx (Trang 25 - 26)

Tải bản đầy đủ (PDF)

(26 trang)