Design Pattern – Delegation Pattern – Ủy quyền


Xem cụ thể ở đây http://en.wikipedia.org/wiki/Delegation_pattern

Là một khái niệm cơ bản của lập trình hướng đối tượng. Thực tế, nó không thực sự là một design pattern, nó là một dạng cơ bản hơn.

Mẫu ủy quyền là một mẫu giúp bạn gián tiếp gọi một phương thức của một lớp. Thường được sử dụng khi bạn muốn phân phối các tính năng tùy theo mục đích cụ thể.

Ví dụ bạn có 2 máy in: PrinterA và PrinterB, printer A để in các tài liệu bình thường. printer B để in các tài liệu quan trọng. Bạn có 2 lớp: PrinterA và PrinterB cùng có phương thức Print.

Khi nào thì print() của A, khi nào của B?

Bạn ủy quyền cho một lớp điều khiển PrintingHandler

Lớp điều khiển này sẽ giúp bạn gọi phương thức của A hoặc B mà không cần lộ hai class này ra (bên gọi hoàn toàn không cần quan tâm đến 2 class A và B)

Mẫu ủy quyền khá giống với mẫu Strategy, Proxy và một vài mẫu khác. Và đừng lo ngại, mẫu ủy quyền là một khái niệm cơ bản nhất và các mẫu khác có thể là một hình thái nào đó của nó với mục đích nhất định.

Ví dụ: Strategy với mục đích ủy quyền thực thi các giải thuật

Ví dụ: Proxy ủy quyền thực hiện nhiệm vụ nào đó và … lưu giữ lại (trong trường hợp đối tượng dữ liệu lớn hoặc quá khó để nhân đôi, hoặc đơn giản là cần được tạo càng ít instance càng tốt (như database connections chẳng hạn).

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s