【设计模式 04】工厂方法:让听得见炮声的人决定
这一课讲工厂方法模式。什么在变:具体创建什么对象在变,但框架不该替子类决定。怎么挡:框架定义接口和使用流程,子类决定具体实现。
东北分厂厂长秦海波是在电话里吼的。
“什么叫春季主推户外系列?哈尔滨三月份零下十五度!谁家消费者零下十五度坐户外藤椅!”
赵闯也吼回去了:“春季系列是总部定的!全国统一下发!”
“你在华南卖得好跟我有什么关系?!”
少主在隔壁听得清清楚楚。赵闯和秦海波的声音隔着两堵墙都挡不住。
他没拦。因为秦海波说的不是没道理。
过去三年的春季营销,都是同一个流程:总部策划部定产品和SKU,统一下发给六家分厂,分厂照单生产,总部统一排产、统一采购原材料、统一投放广告。这个流程效率很高——华南和华东连年增长,规模效应把成本压得很低。
但东北和西北的数字是另一幅画面。秦海波的东北分厂,户外系列入库三周,动销率不到百分之八。西北分厂更惨——经销商直接拒收,说这批货在当地毫无用处。
少主盯着销售报表看了一会儿。数字背后是一个结构性的问题:总部的统一排产是靠标准化驱动的,用最少的SKU覆盖最大的市场。这个逻辑在华南成立,在东北不成立。
他飞了一趟东北。
秦海波带他跑了两天的市场。三月份的长春,街上还铺着雪,家具城里人最多的区域是暖气片展区和实木地热地板专区。户外区域空荡荡,灯都只开了一半。
秦海波指着户外展区说:“看到了吧。我们三月份的主推应该是地热配套家具和封闭式阳台系列。但这些型号总部压根没排产。”
“为什么不提前报需求?”
"报了。"秦海波翻出一封两个月前发给总部计划部的邮件,里面列了十二个适合东北市场的型号。“计划部说需求已记录,等待统一排产。春季系列出来了,十二个型号一个都没在里面。”
少主没说话。他理解计划部的处境——六家分厂需求各不相同,全满足就不是六个型号,是六十个。但他更理解秦海波:总部永远不如分厂了解本地市场。
回程的飞机上,少主在笔记本上画了一张图。
过去三年的春季营销流程是这样的:总部决定型号 → 采购原材料 → 下发分厂生产 → 总部统一投放广告。每一步都由总部驱动,分厂只负责执行。整条链路上,总部既是指挥者,又是决策者。
他在"总部决定型号"这一步画了个叉。
不是砍掉这一步,是换一种方式。总部依然要做春季营销,依然要统一采购、统一投放——这套框架不能动。但框架里有一个步骤需要交给分厂:每个地区的主推产品是什么。
他在总部那个圈里写了两行字:
“我要一套春季主推方案。”
“这套方案必须符合总部的质量和品牌标准。”
然后在六个分厂的圈里各写了一行:“我来决定具体是什么产品。”
流程变成了:总部发起春季营销 → 要求每家分厂提交一套符合标准的主推方案 → 分厂根据本地市场决定具体型号 → 总部拿到方案后统一采购原材料、统一投放广告。
总部的框架没有变——春季营销照做,广告照投,原材料照统一采购。变的是框架里的一个步骤:**"创建主推产品"这个动作,从总部自己干,变成了交给分厂干。**分厂交上来的产品各不相同,但总部不需要知道具体是什么——总部只需要知道这是一套符合标准的主推方案,拿去进框架就行。
回去之后,少主把方案给赵闯和计划部看。
赵闯问:“那原材料怎么统一采购?东北要地热家具,华南要户外家具,料都不一样。”
少主说:“标准件统一采——板材、五金、漆料,这些不分地区。地区特供件分厂自己采购,但必须在总部的合格供应商名录里选。框架管标准和流程,不管每一个零件。”
秦海波交出的东北春季方案是地热配套家具和封闭式阳台系列,入库当月动销率百分之七十三。比总部派的户外系列高了九倍。华南分厂的户外藤编系列依然卖断货。
同一次春季营销,同一个框架,六家分厂交出了六套不同的产品。总部拿着六套产品跑同一套营销流程,广告照投,数据照收。
少主在飞机上画的那张图——框架定流程和接口,子类决定具体产品——在程序设计里有一个名字:工厂方法模式。
父类定义"使用产品"的完整流程,流程中有一个步骤是"创建产品"——这个步骤被声明为抽象方法,交给子类实现。子类创建什么具体产品,父类不关心,也管不着。父类只管拿到产品之后怎么用。创建逻辑的变化被限制在子类里,框架代码不动。
总部
HQCampaign的runCampaign()是雷打不动的骨架:创建产品 → 统一采购标准件 → 投放广告 → 收数据。其中只有createHeroProduct()是抽象方法——分厂只填这一空。
框架不变,填空题的答案各不相同。分厂只管造出合适的产品,总部拿到就往前推。
孙子说:"将能而君不御者胜。"将领能干而君主不干预的,胜。总部不替分厂做决定,但总部的营销骨架照跑——不是放权不管,是只管该管的。
本文所有人物、情节、公司名均为虚构,如有雷同,纯属巧合。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)