這個模式不一定能用GoF的那類表述方式來描述,但卻幾乎可以在大多的成功產品中看到影子。
它可以表述成:軟件的架構要支持開放數據,並提供API讓別人可以編程定制或擴展你的程序。
有人可能一聽后說:這不就是插件么?但把這個等同於插件是把它看小了,插件只是它的一個子集。
那么那些足夠牛的產品中用過這個模式?
真不好一一列舉,立刻能想到的是PC時代的AutoCAD和Excel這種,我有時候甚至懷疑Becky!這郵件客戶端之所以能活得很好和大量的插件可能有很大的關系。往當下想就是微信這種。
當然如果非往這個上扯的話,那各大平台乃至操作系統事實上是這一模式的最大用戶,Linux在很多地方能夠干翻Unix和VxWorks這樣的操作系統和它的外圍工具不斷成熟應該有很大關系,而之所以它的外圍工具能夠不斷成熟則與其開放精神有着本質關聯。
那為什么這個模式如此有價值?
說起來故事也簡單,假設說需求是不斷變化的而不同人的需求也不同,那么就世界上就不存在能夠足夠滿足需求的產品。
那對於一個產品而言這部分無法滿足的需求究竟應該怎么辦?
你要么不理它任由別人抱怨,這類產品注定成不了成功的產品。要么就得把開放精神體現在產品里,讓別人來滿足五花八門的需求。所以說這個模式是很多優秀產品的一種必然選擇。瀏覽器這樣,微信也這樣---只要你的產品還需要面對比較復雜的需求環境,沒認識到並且沒有為此做出應對的,基本上會處在糾結和痛苦中,並為之付出代價。
近來眼見有些在做的東西被需求變化折磨的焦頭爛額,一下子就想到了常說的設計模式,也就進一步想到了上邊這事,泛泛的講這也是一種模式,雖然看着和常說的那種設計模式不一樣,但在應對需求的時候它應該挺關鍵的。