2016-04-08 19 views
0

我讀過chain of the responsibility pattern,這些例子只是普通的打印。如果我想一起鏈接更困難的操作,例如,現實生活中存在一些用例:責任模式的鏈接採用不同的參數類型?

發出請求, request - > Handler 1(request,Integer) - > Handler 2(Integer,字符串) - >處理程序3(字符串,長整型),

其中每個處理程序接受某些參數輸入,並以另一種參數類型生成輸出。我們可以使用通用想法鏈接這樣的處理程序在一起嗎?

public abstract class Handler <Input, Output> { 
 
    public void setSuccessor(Handler handler); 
 
    public abstract Output handleRequest(Input in); 
 
}

我希望我澄清的問題不夠清楚。 謝謝!

回答

0

在一個責任鏈中,鏈的每個元素必須與下一個元素一起設置,所以它必須知道接口應該是什麼。在很多情況下,環境正在傳遞。

您確定您手頭沒有序列,其中處理程序2取決於處理程序1的結果來執行其工作嗎?如果是這樣,責任鏈條就不會解決。

在編譯時使用責任鏈,你不知道哪些步驟是必需的,但是例如當它們來自配置時。