Thứ Ba, 9 tháng 4, 2013

Proxy

1. Khái niệm

Proxy pattern cung cấp một sự thay thế hoặc giữ chỗ cho một đối tượng khác để kiểm soát việc truy cập đến nó.

2. Vấn đề thực tế

Trong các ứng dụng phần mềm hiện đại, phần lớn đều có chức năng kiểm soát quyền xử lý khi thực hiện một thao tác nào đó. Làm thế nào chúng ta có thể ứng dụng điều đó trong lập trình?

hoặc làm thế nào để tiết kiệm bộ nhớ trong việc khởi tạo object?

hoặc làm thế nào để cung cấp một đại diện cho một đối tượng với địa chỉ truy xuất khác local?

hoặc làm thế nào thể xử lý thêm số liệu liên quan đến việc truy xuất đối tượng, caching đối tượng hoặc xử lý các số liệu liên quan đến các thuộc tính của đối tượng?

3. Giải pháp

Proxy pattern sẽ giúp chúng ta giải quyết các vấn đề trên.

Nhìn chung, proxy pattern là mô hình cung cấp một đại diện (proxy) cho một  đối tượng thật (real object). Thay vì truy cập vào đối tượng thật, chúng ta sẽ truy cập vào proxy để xử lý, proxy và đối tượng thật sẽ có cùng các chức năng thao tác, tuy nhiên nội dung các chức năng của proxy sẽ được chỉnh sửa theo yêu cầu của người dùng. Theo hướng này, proxy và real object sẽ cùng implement chung một interface hoặc cùng kế thừa chung một abstract class để có thể có chung các hành vi.

Dựa trên nhu cầu thực tế, chúng ta có 4 loại proxy phổ biến như sau:

1. Virtual Proxy (proxy ảo): có nhiệm vụ tiết kiệm chi phí tài nguyên khi tạo ra 1 object. Object sẽ thật sự được tạo khi nó thực thi 1 tác vụ nào đó.

2. Remote Proxy (proxy từ xa): có nhiệm vụ tạo ra một object trên local, object này là đại diện cho một object thực tế nằm ngoài hệ thống đang vận hành object proxy. Mô hình này được áp dụng cho các stub trong RMI, CORBA, RPC

3. Protective Proxy (proxy bảo vệ): có nhiệm vụ bảo vệ các dữ liệu nhạy cảm của của object chính. Khi truy xuất các thông tin trong object chính sẽ thông qua proxy để thực hiện việc kiểm tra quyền hoặc giới hạn các thông tin cần cung cấp theo yêu cầu.

4. Smart Proxy (proxy thông minh): có nhiệm vụ thêm vào các hành vi hoặc bổ sung thêm các hành vi cho object hiện tại. Proxy thông minh có thể:
- Giúp thống kê số lần truy xuất object
- Giúp load object vào bộ nhớ khi khởi tạo lần đầu tiên để sau đó không phải khởi tạo lại object nữa (áp dụng cho các persistent object)
-  Kiểm tra việc khóa các object thực để ngăn chặn việc truy xuất trong quá trình chỉnh sửa object đó.

4. Mô hình




5. Code sample


6. Mối liên hệ với các pattern khác

1 nhận xét:

  1. All the games you can play on the Sega Genesis - AprCasino
    The best part is, of course, the game, is that there are 바카라 사이트 very apr casino few people https://octcasino.com/ who titanium ring do worrione a lot of the hard work. The best part is, if the

    Trả lờiXóa