这个模式不一定能用GoF的那类表述方式来描述,但却几乎可以在大多的成功产品中看到影子。
它可以表述成:软件的架构要支持开放数据,并提供API让别人可以编程定制或扩展你的程序。
有人可能一听后说:这不就是插件么?但把这个等同于插件是把它看小了,插件只是它的一个子集。
那么那些足够牛的产品中用过这个模式?
真不好一一列举,立刻能想到的是PC时代的AutoCAD和Excel这种,我有时候甚至怀疑Becky!这邮件客户端之所以能活得很好和大量的插件可能有很大的关系。往当下想就是微信这种。
当然如果非往这个上扯的话,那各大平台乃至操作系统事实上是这一模式的最大用户,Linux在很多地方能够干翻Unix和VxWorks这样的操作系统和它的外围工具不断成熟应该有很大关系,而之所以它的外围工具能够不断成熟则与其开放精神有着本质关联。
那为什么这个模式如此有价值?
说起来故事也简单,假设说需求是不断变化的而不同人的需求也不同,那么就世界上就不存在能够足够满足需求的产品。
那对于一个产品而言这部分无法满足的需求究竟应该怎么办?
你要么不理它任由别人抱怨,这类产品注定成不了成功的产品。要么就得把开放精神体现在产品里,让别人来满足五花八门的需求。所以说这个模式是很多优秀产品的一种必然选择。浏览器这样,微信也这样---只要你的产品还需要面对比较复杂的需求环境,没认识到并且没有为此做出应对的,基本上会处在纠结和痛苦中,并为之付出代价。
近来眼见有些在做的东西被需求变化折磨的焦头烂额,一下子就想到了常说的设计模式,也就进一步想到了上边这事,泛泛的讲这也是一种模式,虽然看着和常说的那种设计模式不一样,但在应对需求的时候它应该挺关键的。