我正在編寫一個規範,希望陳述(以明確的方式)程序員使用此模式:這種模式的名字是什麼?
我們必須對正在處理的數據應用多個過濾器。該配置允許創建這些過濾器。可以有幾個,或沒有。我不想在導出類中使用這種邏輯(因爲它可能會在未來變得很大,使用不同類型的過濾器,我們現在無法預見)。我希望它們一個接一個地運行,所以我將要求在導出類中添加一個方法:「addFilter」,它應該將對象存儲在內部數組中,然後在實際導出過程運行時讓它們執行。
我不知道問題是否足夠清楚。這就像一個鏈式戰略,但不完全是一個策略,因爲它根本不是強制性的。
同樣,問題是:我應該如何在規範中調用此模式?
編輯:什麼我試圖做一個例子:
$report = new Report();
$report->addFilter(new RemoveSpaces())
->addFilter(new SubstituteText($predefined_substitutions_array)
->addFilter(new FixCapitals())
->addFilter(new Encode("utf8"));
echo($report->generate()); // filters are actually used during generation.
據稱,用戶應該能夠決定是否RemoveSpaces與否,代替什麼文本,是否利用單詞與否,使用什麼編碼等。將來肯定會在用戶(客戶端,實際)請求中添加一些過濾器。
一旦分解,過濾器應該有一個簡單的界面,該報告將稱:
foreach($this->filters as $current_filter) {
$data = $this->filters[$current_filter]->applyTo($data);
}
你可以添加一個僞代碼示例來說明你在說什麼嗎? –
查看編輯的問題。 –