CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 643

643

Chương 16: Các giao diện và mẫu thông dụng

get { return instance; }

}

// Các phương thức public cung cấp chức năng của singleton.

public void SomeMethod1 () { /*..*/ }

public void SomeMethod2 () { /*..*/ }

}

Để gọi các chức năng của lớp

SingletonExample

, bạn có thể lấy về một tham chiếu đến

singleton bằng thuộc tính

Instance

và rồi gọi các phương thức của nó. Bạn cũng có thể trực

tiếp thực thi các thành viên của singleton thông qua thuộc tính

Instance

. Đoạn mã dưới đây

trình bày cả hai cách này:

// Thu lấy tham chiếu đến singleton và gọi một phương thức của nó.

SingletonExample s = SingletonExample.Instance;

s.SomeMethod1();

// Thực thi chức năng của singleton mà không cần tham chiếu.

SingletonExample.Instance.SomeMethod2();

10.

10.

Hi n th c m u Observer

ự ẫ

Hi n th c m u Observer

ự ẫ

Bạn cần hiện thực một cơ chế hiệu quả để một đối tượng (subject) báo với các đối
tượng khác (observer
) về những thay đổi trạng thái của nó.

Hiện thực mẫu Observer bằng các kiểu ủy nhiệm (đóng vai trò là các con trỏ hàm
an-toàn-về-kiểu-dữ-liệu—type-safe function pointer
) và các kiểu sự kiện.

Cách truyền thống khi hiện thực mẫu Observer là hiện thực hai giao diện: một để mô tả
observer (

IObserver

) và một để mô tả subject (

ISubject

). Các đối tượng có hiện thực

IObserver

sẽ đăng ký với subject, cho biết chúng muốn được thông báo về các sự kiện quan

trọng (như thay đổi trạng thái) tác động đến subject. Subject chịu trách nhiệm quản lý danh
sách các observer đã đăng ký và thông báo với chúng khi đáp ứng các sự kiện tác động đến
subject. Subject thường thông báo với observer bằng phương thức

Notify

(được khai báo

trong giao diện

IObserver

). Subject có thể truyền dữ liệu cho observer trong phương thức

Notify

, hoặc observer có thể cần gọi một phương thức được khai báo trong giao diện

ISubject

để thu lấy thêm các chi tiết về sự kiện.

Mặc dù bạn có thể hiện thực mẫu Observer bằng C# theo cách vừa được mô tả, nhưng vì mẫu
Observer quá phổ biến trong các giải pháp phần mềm hiện đại nên C# và .NET Framework
cung cấp các kiểu sự kiện và ủy nhiệm để đơn giản hóa hiện thực của nó. Sử dụng sự kiện và
ủy nhiệm nghĩa là bạn không cần khai báo giao diện

IObserver

ISubject

. Ngoài ra, bạn

không cần hiện thực các logic cần thiết để quản lý và thông báo với các observer đã đăng ký
—đây chính là phần dễ xảy ra lỗi nhất khi viết mã.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.