对工艺流程的思考
工艺有很多种,不同产品工艺流程不同,不同的工艺流程有不同的操作顺序。
以目前车间生产的主流产品物联网水表为例,需要先装配基表(可以通水的部分),然后安装电池,最后安装网络模块(负责将水表接入网络,实现远程抄读与控制)。
目前需要控制生产流程严格的安装基表–电池–网络模块先后顺序来实完成。
该怎么办呢。
对建造者模式的参考
与顺序相关的设计模式不就是建造者模式么,二毛突然脑子里闪过一道光,何不参考下设计模式,看看能不能获取设计上的灵感。
于是二毛打开经典的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个班长跟二毛讨论了一下午。
直到街灯渐亮、直到路上行人匆匆,一套参考建造者模式的工序管理方案终于落定。
接下来就是试行、监督执行了,这里面可能还有不少困难吧。
改革是困难的,但是只要脚踏实地,应该会收获价值吧。