極簡架構模式-攔截過濾器模式

long2ge發表於2021-12-18

說明

攔截過濾器模式,簡稱攔截器模式,是責任鏈模式的一種衍生模式。用於對應用程式的請求或響應做一些預處理/後處理。

結構中包含的角色

  1. Filter(抽象處理者)
  2. RegularFilter(具體處理者)
  3. FilterChain(責任鏈)
  4. FilterManager(鏈條管理者)

最小可表達程式碼

interface Filter
{
    public function doFilter();
}

class RegularFilter implements Filter
{
    public function doFilter()
    {
        echo '業務處理';
    }
}

class FilterChain 
{
    private $filters = [];

    public function addFilter(Filter $filter)
    {
        $this->filters[] = $filter;
    }

    public function doFilter()
    {  
        foreach ($this->filters as $filter) {
            $filter->doFilter();
        }
    }
}

class FilterManager 
{
    public $filterChain;

    public function __construct()
    {
        $this->filterChain = new FilterChain();
    }

    public function addFilter(Filter $filter)
    {
        $this->filterChain->addFilter($filter);
    }

    public function doFilter()
    {
        $this->filterChain->doFilter();
    }
}

$filterManager = new FilterManager();
$filter = new RegularFilter();
$filterManager->addFilter($filter);
$filterManager->doFilter();

實際應用場景

  1. Servlet Filter。
  2. SpringMVC Interceptor。

攔截器和過濾器的區別

過濾器(Filter) : 過濾資料。請求過濾引數。 攔截器(Interceptor) : 攔截請求。攔截請求並且做相關的處理。 登陸攔截器,未登陸會跳轉到登陸頁面。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
Long2Ge

相關文章