第52章 架构新系统(1 / 2)

正午十一点三十分,驻厂办公楼的走廊准时响起此起彼伏的键盘归位声。

“轮到我们这批去吃饭了,走大家拿上饭盒吃饭去” 宋哥站在白板前敲了敲手中的不锈钢饭盒,白板上用红笔标注着分批次就餐时间 。

食堂位于办公楼后侧的红砖建筑,推开门时蒸腾的热气裹挟着红烧肉的香气扑面而来。十二排长条桌被金属隔板分成规整的就餐区,十张原木色餐桌铺着蓝白格桌布,每张桌中央立着写有编号的铜牌。李君浩注意到靠墙处的消毒柜正发出嗡鸣,墙上贴着 “光盘行动” 标语,角落的绿萝垂着蔫头耷在灭火器上。

李君浩所在的 7 号桌很快坐满了人,大家把自带的碗筷整齐摆放在桌角。阮星超伸长脖子张望着:“怎么还不开饭啊,我都快饿扁了!” 话音刚落,就见食堂张阿姨系着碎花围裙,和另一位师傅推着餐车走了过来。餐车上码放着五个硕大的不锈钢碗,盖子掀开的瞬间,土豆烧鸡块的香气、酸辣土豆丝的酸香、蒜蓉油麦菜的清香,还有冬瓜丸子汤的鲜香顿时弥漫开来。

“大家久等啦!” 张阿姨笑着将四菜一汤依次摆上餐桌,“这是土豆烧鸡块、酸辣土豆丝、蒜蓉油麦菜和冬瓜丸子汤,不够吃随时叫我!” 她又从推车上拿下三个装有公筷的消毒盒,“每桌配了三双公筷,大家用公筷夹菜啊,讲究卫生!”

吴经理此时也走了过来,在主位上坐下,顺手把西装外套搭在椅背上:“听说今天有新菜,我也来凑凑热闹。” 他拿起公筷,先给林夕若夹了块鸡块,“小姑娘多吃点肉,看你瘦的。”

林夕若连忙道谢,耳尖泛红:“谢谢吴总!”

“都别客气,放开了吃!” 吴经理一边说,一边给大家盛汤,“这次 pcb 计价平台项目时间紧、任务重,大家辛苦了!吃饱了才有力气干活!”

阮星超早就迫不及待,用公筷夹了个大丸子放进碗里:“哇,这丸子看着就好吃!阿姨,明天还有什么好菜啊?”

“就你小子馋!” 张阿姨笑着点了点他的额头,“明天有啤酒鸭,管够!”

李君浩尝了口土豆烧鸡块,肉质鲜嫩,汤汁浓郁,忍不住赞叹:“阿姨,这菜烧得太好吃了!”

“好吃就多吃点!” 张阿姨笑得眼睛眯成了一条缝,“你们这些孩子,大老远来驻厂开发,可不能亏待了自己。有什么想吃的尽管说,阿姨给你们做!”

宋哥咽下嘴里的饭菜,擦了擦嘴:“吴总,关于项目和工厂对接的事,您看什么时候方便?”

吴经理放下筷子,认真说道:“下午我就带你们去车间,让老师傅给你们详细讲讲 pcb 的工艺流程。还有那个 bom 成本核算模块,得结合实际生产来优化。” 他转头看向褚砚兵,“小褚,听说你技术很扎实?有什么想法尽管提,咱们一起把项目做好!”

驻厂办公室的白炽灯在头顶嗡嗡作响,李君浩擦了擦手心的汗,将投影仪遥控器握得发烫。十二张折叠椅围成半圈,阮星超抱着笔记本电脑瘫在角落,褚砚兵的笔记本已经密密麻麻写满两页,宋哥翘着二郎腿,手里的红塔山在烟灰缸边缘轻轻叩击。

“大家看这个解决方案。” 李君浩按下遥控器,大屏幕跳出分层架构图,不同颜色的类库像精密齿轮咬合在一起,“咱们先从最核心的 domain 层开始。” 他用激光笔点向标注着 dto 和 Entity 的模块,“Entity 是实体类,就像 pcb 订单,每个字段对应数据库表结构;dto 是数据传输对象,比如用户在前台提交的计价参数,经过 dto 封装后再传递给后端,这样能避免直接暴露敏感数据。”

“等等!” 林夕若举起涂着紫色美甲的手,“那 Entity 和 dto 为什么不合并?多写一层好麻烦。”

李君浩点开示例代码,光标在屏幕上快速跳动:“举个例子,用户注册时填的手机号需要脱敏处理,但数据库存的是明文。用 dto 就能在接收数据时直接处理,而 Entity 保持纯净,只负责和数据库交互。这就像快递包装,dto 是外面的纸箱,Entity 是里面的易碎品。”

阮星超突然笑出声:“那 dao 层就是快递小哥?”

“差不多。” 李君浩被逗乐,切换到 dao 类库界面,“data Access object 专门负责数据库操作,增删改查都封装在这里。比如查询订单列表,业务层只需要调用 dao 的 GetorderList 方法,不用关心具体的 SqL 语句怎么写。” 他调出一段 EF 代码,“这里用了 EF 的仓储模式,以后换数据库都不用大改代码。”

宋哥掐灭香烟,往前坐了坐:“业务层的业务逻辑怎么划分?”

“看这个计价算法模块。” 李君浩放大代码窗口,注释用红色高亮标出,“用户提交板材尺寸、层数这些参数后,bussiness 层先验证数据合法性,再调用 dao 获取工艺参数,最后用计算公式生成报价。每个功能都拆分成独立方法,比如 calculateprice、Validateparameters,方便测试和维护。”

沈杰突然开口,手指在数位板上快速滑动:“那 mVc 控制器就是连接前后端的枢纽?”

“完全正确!” 李君浩切换到 controllers 文件夹,“前端发送的 http 请求都会经过控制器。比如处理用户登录,Logincontroller 接收请求,调用业务层的验证方法,再把结果封装成 Json 返回给前台。这里用了依赖注入,解耦了控制器和具体业务类。”

褚砚兵突然举手,声音有些发闷:“通用类库 层的工具类,像日志记录、加密算法,为什么不直接放在其他层?”

“这就是分层架构的精髓。” 李君浩调出通用类库层的目录树,“公共类库是独立的‘瑞士军刀’,哪个层需要就引用。比如日志记录,dao 层增删数据要记日志,bussiness 层处理异常也要记,统一放在 m 层避免重复开发。” 他点开加密类的代码,“这里的 AES 加密算法,前台传输敏感数据时用,后台保存密码时也用。”

会议室突然陷入沉默,只有空调外机的轰鸣声。李君浩翻到最后一页 ppt,上面用加粗字体写着 “高内聚,低耦合”:“大家别被这么多层吓到,其实就像搭积木,每个模块只做一件事。有问题随时问,这三天我会带着大家把代码撸熟。”

“小李可以啊!” 宋哥笑着鼓掌,烟头在烟灰缸里碾出火星,“讲得挺好。明天开始,按这个架构分模块开发,遇到卡点随时叫我。”

刚吃完晚晚饭, 发现林夕若还趴在电脑前,\"你的饭,带过来了 ,快吃吧,解决了没\",李君浩把帮林夕若带的饭递过去!