意象說明
Design Pattern < 重複的模式
前言
讀者應該已經發現,上一篇 文中提到的 resolver 模式,與 Promise 似乎有著極為類似的形式。的確,Promise 與 resolver 模式有許多相似之處,尤其是 resolver 的變體形式,與 Promise 一樣,都有著 resolve()
函數。然而,resolver 主要是用來對付 falsy 值問題,而 promise 的主要目的是處理 asnyc (異步) 問題。
resolver 模式
1 | function eval(expression) { |
promise 模式
1 | return new Promise(resolver); |
同時,最能彰顯兩者強大功能的地方,同樣是串連多個函數時:
resolver 模式
1 | var result = (expired() || cached() || read() || defaults())(); |
promise 模式
1 | return new Promise(read) |
結論
在 Design Pattern 的世界中,有許多的 pattern 其實具有相近甚至相同的形式,而其嘗試解決的問題,卻是如此不同。能夠注意到諸多 pattern 在形式上的相似,已然是融會貫通的具體表徵,但更重要的是,對於問題本質的洞察。