今天要介紹的模式是屬於結構型模式的一種,此模式的名稱我想大多數的人都聽過或是知道它是做甚麼用的,而它所做的事情就像它的名子一樣,那就是Proxy!
代理模式它在做的事情就是「控制和管理對所有保護的物件的訪問行為」,在現實生活中,可以把信用卡當作是我們銀行帳戶中的代理,它能夠代替現金使用,同時也能夠在需要的時候提供一種獲取現金的一種方式。
再舉一個例子,學校的網路通常都會限制某些網站不能存取,像是社群網站、色情網站等等,好讓學生不在電腦課上亂逛有的沒的的網站,而這就是Proxy的作用。
首先它會先檢查你要連線的主機,是否為它的限制站點列表中的其中之一,如果是的話可能就會被限制存取或是直接跳回首頁,總之就是不會讓你連線到被限制的站點;反之,你的要求就會被代理接受,就可以連線到你想要的網站。
interface Service {
public void operation();
}
class ConcreteService implements Service {
public void operation() {
// do something
}
}
class Proxy implements Service {
Service service = new ConcreteService();
public Proxy(Service service) {
this.service = service;
}
public boolean checkAccess() {
// verifyi access authority
}
public void operation() {
if(checkAcess()) {
service.operation();
}
}
}
代理模式最大的好處就是它的安全性,可以避免大量的程式重複,間接提高了應用程式的效能,不過因為需要多一步檢查的作業,也就可能會造成服務響應的延遲,而且需要新增許多新的類別,因此程式碼會變得比較複雜。
除此之外,也歡迎大家走走逛逛關於我們團隊夥伴的文章
juck30808 - Python - 數位行銷分析與 Youtube API 教學
SiQing47 - 前端?後端?你早晚都要全端的,何不從現在開始?