- 什麼是間接層 (indirection) ?
- 間接層的實作
什麼是間接層?
間接層把「是什麼」與「如何實作」這兩件事分開來。當有人詢問『這個東西是怎麼運作的?』的時候,如果最好的答案是『視情況而定』,這就是間接層存在的最佳時機。當「實作」很複雜,或是很容易改變時,加入間接層就很有幫助。
間接層通常用兩種基本的方式來做:
- 參考 (references)
- 條件表達式 (conditionals)
參考 | 條件表達式 | 表格 (無序的條件) | |
---|---|---|---|
功能 | 傳遞值 | 依照輸入值來做決定 | 依照輸入值來做決定 |
對於改變 | 開放 | 閉鎖 (除非改程式碼) | 開放 |
範例 | 傳遞函數的參數 | if/case/cond | multimethod/protocol |
條件表達式的本質是有序的條件 (order conditionals) ,所以它對於修改是閉鎖的,一定要改程式碼才有辦法改。如果想要做出容易修改的「條件」,就要把它改成無序的條件 (unorder conditionals) ,又可以稱之為表格。