使用设计模式出任CEO迎娶白富美(7)–建造者模式解决工艺复杂问题
2021/1/14 8:08:21
本文主要是介绍使用设计模式出任CEO迎娶白富美(7)–建造者模式解决工艺复杂问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
对工艺流程的思考
工艺有很多种,不同产品工艺流程不同,不同的工艺流程有不同的操作顺序。
以目前车间生产的主流产品物联网水表为例,需要先装配基表(可以通水的部分),然后安装电池,最后安装网络模块(负责将水表接入网络,实现远程抄读与控制)。
目前需要控制生产流程严格的安装基表–电池–网络模块先后顺序来实完成。
该怎么办呢。
对建造者模式的参考
与顺序相关的设计模式不就是建造者模式么,二毛突然脑子里闪过一道光,何不参考下设计模式,看看能不能获取设计上的灵感。
于是二毛打开经典的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个班长跟二毛讨论了一下午。
直到街灯渐亮、直到路上行人匆匆,一套参考建造者模式的工序管理方案终于落定。
接下来就是试行、监督执行了,这里面可能还有不少困难吧。
改革是困难的,但是只要脚踏实地,应该会收获价值吧。
这篇关于使用设计模式出任CEO迎娶白富美(7)–建造者模式解决工艺复杂问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-07fastcgi 是什么-icode9专业技术文章分享
- 2024-10-07fastcgi 的详细使用教程介绍-icode9专业技术文章分享
- 2024-10-07git如何更新单个文件到本地-icode9专业技术文章分享
- 2024-10-07如何使用ASM(Abstract Syntax Tree Manipulation)技术来修改第三方AAR依赖中的函数-icode9专业技术文章分享
- 2024-10-07Activity 跳转时间耗时很长怎么优化解决-icode9专业技术文章分享
- 2024-10-07Androud Toast 有哪些常用的第三方组件-icode9专业技术文章分享
- 2024-10-07在viewmodel中怎么使用 mmkv?-icode9专业技术文章分享
- 2024-10-07MMKV.defaultMMKV() 是单例模式吗?-icode9专业技术文章分享
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享