Proxy Pattern

Proxy Pattern

Proxy là m?t m?u thi?t k? c?u trúc cho phép b?n cung c?p m?t thay th? ho?c gi? ch? cho m?t ??i t??ng khác. M?t proxy ki?m soát quy?n truy c?p vào ??i t??ng ban ??u, cho phép b?n th?c hi?n ?i?u gì ?ó tr??c ho?c sau khi yêu c?u ???c chuy?n ??n ??i t??ng ban ??u.

?? V?n ??

T?i sao b?n mu?n ki?m soát quy?n truy c?p vào m?t ??i t??ng? ?ay là m?t ví d?: b?n có m?t ??i t??ng kh?ng l? tiêu t?n m?t l??ng l?n tài nguyên h? th?ng. Th?nh tho?ng b?n c?n nó, nh?ng kh?ng ph?i lúc nào c?ng v?y.


Các truy v?n c? s? d? li?u có th? th?c s? ch?m.

B?n có th? tri?n khai lazy initialization: ch? t?o ??i t??ng này khi th?c s? c?n thi?t. T?t c? các khách hàng c?a ??i t??ng s? c?n th?c thi m?t s? m? deferred initialization. Th?t kh?ng may, ?i?u này có th? s? gay ra r?t nhi?u trùng l?p m?.

Trong m?t th? gi?i ly t??ng, chúng t?i mu?n ??a m? này tr?c ti?p vào l?p ??i t??ng c?a mình, nh?ng ?i?u ?ó kh?ng ph?i lúc nào c?ng có th?. Ví d?, class có th? là m?t ph?n c?a closed 3rd-party library.

?? Gi?i Pháp

Proxy Pattern g?i y r?ng b?n t?o m?t class proxy m?i v?i cùng interface v?i m?t ??i t??ng d?ch v? ban ??u. Sau ?ó, b?n c?p nh?t ?ng d?ng c?a mình ?? nó chuy?n ??i t??ng proxy cho t?t c? các clients c?a ??i t??ng ban ??u. Khi nh?n ???c yêu c?u t? clients, proxy t?o ra m?t ??i t??ng d?ch v? th?c s? và ?y thác t?t c? c?ng vi?c cho nó.


Proxy ng?y trang thành m?t ??i t??ng c? s? d? li?u. Nó có th? x? ly vi?c lazy initialization và

Nh?ng l?i ích là gì? N?u b?n c?n th?c hi?n m?t cái gì ?ó tr??c ho?c sau logic chính c?a l?p, proxy cho phép b?n làm ?i?u này mà kh?ng c?n thay ??i l?p ?ó. Vì proxy tri?n khai interface gi?ng nh? l?p ban ??u, nó có th? ???c chuy?n cho b?t k? client nào mong ??i m?t ??i t??ng d?ch v? th?c.

?Kh? n?ng ?ng d?ng

  • Lazy initialization (proxy ?o). ?ay là khi b?n có m?t ??i t??ng d?ch v? n?ng ky l?ng phí tài nguyên h? th?ng b?ng cách lu?n ho?t ??ng, m?c dù th?nh tho?ng b?n ch? c?n nó.
  • Ki?m soát truy c?p (protection proxy). ?ay là khi b?n ch? mu?n các client c? th? có th? s? d?ng ??i t??ng d?ch v?; ví d?, khi các ??i t??ng c?a b?n là các ph?n quan tr?ng c?a h? ?i?u hành và client là các ?ng d?ng ???c kh?i ch?y khác nhau (bao g?m c? nh?ng ?ng d?ng ??c h?i).
  • Th?c thi c?c b? c?a m?t d?ch v? t? xa (remote proxy). ?ay là khi ??i t??ng d?ch v? ???c ??t trên m?t máy ch? t? xa.
  • Yêu c?u ghi nh?t ky (logging proxy). ?ay là lúc b?n mu?n l?u gi? l?ch s? các yêu c?u ??i v?i ??i t??ng d?ch v?.
  • Caching request results (caching proxy). ?ay là lúc b?n c?n l?u tr? k?t qu? c?a các yêu c?u c?a khách hàng và qu?n ly vòng ??i c?a b? nh? ??m này, ??c bi?t n?u k?t qu? khá l?n.
  • Smart reference. ?ay là lúc b?n c?n có th? lo?i b? m?t ??i t??ng h?ng n?ng m?t khi kh?ng có khách hàng nào s? d?ng nó.

要查看或添加评论,请登录

Nguy?n ??ng Khoa的更多文章

  • Chain of Responsibility Pattern

    Chain of Responsibility Pattern

    Chain of Responsibility là m?t m?u thi?t k? hành vi cho phép b?n chuy?n các yêu c?u d?c theo chu?i ng??i x? ly. Khi…

  • Facade Pattern

    Facade Pattern

    Facade Pattern là m?t structural design pattern cung c?p interface ??n gi?n hóa cho library, framework ho?c b?t k? t?p…

    1 条评论
  • Decorator Pattern

    Decorator Pattern

    Decorator Pattern là m?t m?u thi?t k? c?u trúc cho phép b?n ?ính kèm các hành vi m?i vào ??i t??ng b?ng cách ??t các…

  • Composite Pattern

    Composite Pattern

    Composite là m?t m?u thi?t k? c?u trúc cho phép b?n k?t h?p các ??i t??ng thành c?u trúc cay r?i làm vi?c v?i các c?u…

  • Bridge Pattern

    Bridge Pattern

    Bridge is a structural design pattern that lets you split a large class or a set of closely related classes into two…

  • Adapter Pattern

    Adapter Pattern

    Ti?p t?c lo?t bài Design Patterns, h?m nay t?i s? chia s? t?i m?i ng??i Adapter Pattern. Adapter is a structural design…

  • Singleton Pattern

    Singleton Pattern

    Quay tr? l?i series design patterns, ngày h?m nay t?i s? chia s? t?i các b?n Singleton Pattern. Cùng tìm hi?u nhé.