工艺有很多种,不同产品工艺流程不同,不同的工艺流程有不同的操作顺序。
以目前车间生产的主流产品物联网水表为例,需要先装配基表(可以通水的部分),然后安装电池,最后安装网络模块(负责将水表接入网络,实现远程抄读与控制)。
目前需要控制生产流程严格的安装基表–电池–网络模块先后顺序来实完成。
该怎么办呢。
与顺序相关的设计模式不就是建造者模式么,二毛突然脑子里闪过一道光,何不参考下设计模式,看看能不能获取设计上的灵感。
于是二毛打开经典的Eclipse,开始针对当前的场景进行代码实现。
首先,我们要生产物联网表,该产品具备基表、电池、网络模块。
/** * 物联网仪表 */ public class IotMeter { // 基表 private String basic; // 电池 private String battery; // 网络模块 private String connection; // 省略 get set... }
然后,我们要实现产品的制造(Builder),我们抽象的看制造这件事,就是装配基表、装配电池、装配网络模块,最后得到一个完整的产品。
/** * 抽象制造接口 */ public interface IBuilder { /** * 装配基表 */ public void buildBasic(); /** * 装配电池 */ public void buildBattery(); /** * 装配网络模块 */ public void buildConnection(); /** * 得到完整产品 */ public IotMeter buildMeter(); }
有了产品制造的抽象接口,我们针对具体的物联网表制造有一个单独的制造类。
/** * 具体建造者 */ public class IotMeterBuilder implements IBuilder { private IotMeter iotMeter; public IotMeterBuilder(IotMeter inputMeter) { this.iotMeter = inputMeter; } @Override public void buildBasic() { iotMeter.setBasic("装备基表"); System.out.println("已装配基表"); } @Override public void buildBattery() { iotMeter.setBattery("装配电池"); System.out.println("已装配电池"); } @Override public void buildConnection() { iotMeter.setConnection("装配网络模块"); System.out.println("已装配网络"); } @Override public IotMeter buildMeter() { return iotMeter; } }
此时重点就来了,我们虽然有制造类可以装配各个组件,最终得到整个产品。但是我们没法控制顺序。
就像虽然有制造各个组件的工人,但是他们的工作没有先后顺序。而且在流水线作业的情况下,每个工作只负责一个装配工序,工人是没法控制装配的先后顺序的。
所以是必须要有指挥者的角色,来控制装配的顺序。
/** * 指挥者 */ public class Director { public IotMeter makeIotMeter(IBuilder builder) { builder.buildBasic(); builder.buildBattery(); builder.buildConnection(); return builder.buildMeter(); } }
这样所有的生产计划,下达给指挥者,指挥者负责协调每个产品的装配顺序,并最终获得一个完整的可靠产品。
这样,车间在下达生产任务时,可以直接下发给指挥者。
/** * 车间 */ public class Workshop { public static void main(String[] args) { // 将生产任务下达给指挥者即可 Director director = new Director(); // 指挥者指挥生产物联网表 IotMeter meter=director.makeIotMeter(new IotMeterBuilder(new IotMeter())); } }
此时运行程序,查看输出,果然生产一个产品的顺序是按照指挥者指定的顺序。
已装配基表 已装配电池 已装配网络
这天,二毛把3个班长叫到办公室,先给这仨讲了下建造者模式,结果三人一脸迷茫…
好吧,一如既往的迷茫,还是要加强对设计模式的学习啊。
不懂模式没事,反正按照模式的话,要解决工艺流程中的操作顺序问题,就必须有指挥者的角色存在。
对每个型号的产品,要细分有一个装配工序。
然后针对每型产品,都要有对应的指挥者,既然班长比较忙,那就由班长指定几个能力比较强的工人,每个工人负责若干型号的指挥。
那么如何考核呢?这个也很简单,指挥者要落实最后的整个产品的获取,也就是说整个产品的质量与指挥者直接相关。
将指挥者对应产品型号的合格率纳入该指挥者的绩效考核就OK了。
当然了,这里面还有若干细节,于是当天3个班长跟二毛讨论了一下午。
直到街灯渐亮、直到路上行人匆匆,一套参考建造者模式的工序管理方案终于落定。
接下来就是试行、监督执行了,这里面可能还有不少困难吧。
改革是困难的,但是只要脚踏实地,应该会收获价值吧。