iT邦幫忙

2021 iThome 鐵人賽

DAY 20
1

  今天要介紹的模式是屬於結構型模式的一種,此模式的名稱我想大多數的人都聽過或是知道它是做甚麼用的,而它所做的事情就像它的名子一樣,那就是Proxy!


問題情境與解析

  代理模式它在做的事情就是「控制和管理對所有保護的物件的訪問行為」,在現實生活中,可以把信用卡當作是我們銀行帳戶中的代理,它能夠代替現金使用,同時也能夠在需要的時候提供一種獲取現金的一種方式。

  再舉一個例子,學校的網路通常都會限制某些網站不能存取,像是社群網站、色情網站等等,好讓學生不在電腦課上亂逛有的沒的的網站,而這就是Proxy的作用。

  首先它會先檢查你要連線的主機,是否為它的限制站點列表中的其中之一,如果是的話可能就會被限制存取或是直接跳回首頁,總之就是不會讓你連線到被限制的站點;反之,你的要求就會被代理接受,就可以連線到你想要的網站。

Class Diagram

https://ithelp.ithome.com.tw/upload/images/20211005/201407439l7Co8jR95.png

Skeleton Code

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();
        }
    }
}

  代理模式最大的好處就是它的安全性,可以避免大量的程式重複,間接提高了應用程式的效能,不過因為需要多一步檢查的作業,也就可能會造成服務響應的延遲,而且需要新增許多新的類別,因此程式碼會變得比較複雜。


除此之外,也歡迎大家走走逛逛關於我們團隊夥伴的文章

lu23770127 - SASS 基礎初學三十天

10u1 - 糟了!是世界奇觀!

juck30808 - Python - 數位行銷分析與 Youtube API 教學

SiQing47 - 前端?後端?你早晚都要全端的,何不從現在開始?


上一篇
IT鐵人DAY 19-Flyweight 享元模式
下一篇
IT鐵人DAY 21-Facade 外觀模式
系列文
淺談物件導向與Design Pattern介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言