java设计模式之工厂模式《铸剑风云录》
【卷一】初承家业:铸剑困局
「看剑!」
独孤小黄凌空踏出七星步,口中念道:【一剑霜寒十四州】,手中「太虚剑」绽出万丈青芒。对面黑袍客狞笑着挥动血刃,刀气化作百丈骷髅扑来。正当他欲使出「天外飞仙」最后一式时——
铛!铛!铛!
震耳欲聋的打铁声撕裂幻境,少年猛然惊醒。汗湿的手掌仍紧攥着半截柴火,炉膛火星溅上手背的灼痛,比不过心头怅然若失的钝痛。
「第八十七次...」小黄望着墙上深浅不一的刻痕苦笑。自父亲病逝后,这方三尺铸剑台便成了他的江湖。十八岁的单薄肩膀扛着「独孤铸剑坊」的鎏金牌匾,却连锻造常用剑型都要手忙脚乱。
public class 祖传铸剑术 {
public 剑 铸造(String 剑型) {
// 每次铸造都要从头开始
引地火(); // 耗时三个时辰
折叠锻打(9); // 硬编码锻打次数
寒潭淬火(); // 往返三十里山路
switch(剑型) { // 上帝类判断分支
case "青虹": return new 青虹剑();
case "鱼肠": return new 鱼肠匕();
default: throw new 未知剑型异常();
}
}
}
现实远比幻境残酷:上月陇西马帮订购三十把斩马刀,小黄昼夜不息挥锤七日,最终因体力不支打歪了第三十二次折叠锻打。崩裂的刀胚飞溅划破牌匾,「独孤」的「独」字永远缺了一角。
「小黄哥,我的锄头修好了吗?」
隔壁农户的催促将他拉回现实。望着墙角堆积的订单——三把镰刀、五柄柴斧、两杆红缨枪,还有张泛黄的「青虹剑」订单已逾期半月。炉火映照着他龟裂的手指,锻造常用剑型的流程像诅咒般重复:
- 引地火大阵:每次启动消耗十斤焦炭
- 九锻法:固定九次折叠锻打,即便玄铁已现裂纹
- 十三淬:机械往返寒潭十三次,从不管剑型差异
「这哪是铸剑...分明是驴拉磨!」小黄愤然掷锤,火星在潮湿的青石板上嘶叫着熄灭。坊间流言蜚语渐起:「独孤家的小子守着金招牌吃糠咽菜」「打把镰刀都要三日,迟早关门」
暗夜微光:某日收拾父亲遗物时,铁砧底部暗格突然弹开。一卷用梵文写着《天工开物录》的牛皮卷轴滚落,扉页朱砂批注刺入眼帘:
「万器皆有道,流水自成章——墨翟」
此后,小黄一头钻入了秘籍之中。
【卷二】灵台清明:工厂方法顿悟
子时三刻,独孤小黄第千百次翻开《天工开物录》。泛黄的牛皮卷上,墨翟手书的「化整为零,各司其职」八字突然泛起金光。窗外惊雷炸响,一道闪电劈中铸剑台,炉中未成形的剑胚竟在雷火中熔成流动的梵文!这些梵文仿佛有生命一般跳跃了起来,围绕着小黄转动了起来,小黄立即盘腿打坐,运起体内的真气,在梵文的笼罩下进入,进入冥想。不知过了许久,冥想中的小黄猛然睁开双眼,眼中竟有金光闪过,口中不停念道:原来如此,原来如此。
几日后,小黄就创造出了一套铸剑模板。
基础架构:铸剑流水线
// 铸剑流程大纲(就像武功秘籍总纲)
abstract class 铸剑模版 {
// 总铸造流程(不可更改的内功心法)
public final 剑 开始铸剑() {
剑胚 胚 = 打造剑胚(); // 第一步:不同剑型有不同做法
淬火处理(胚); // 第二步:淬火方式可变
return 开刃刻字(胚); // 第三步:统一收尾动作
}
// 留给子类实现的抽象方法(各派系独门绝技)
abstract 剑胚 打造剑胚(); // 如何打造剑胚
abstract void 淬火处理(剑胚 胚); // 如何淬火
// 固定收尾方法(独孤家祖传手艺)
private 剑 开刃刻字(剑胚 胚) {
System.out.println("刻上『独孤制造』");
return 胚.打磨开刃();
}
}
具体实现:不同剑型的工坊
// 青虹剑流水线(好比武当派剑法)
class 青虹剑工坊 extends 铸剑模版 {
@Override
剑胚 打造剑胚() {
System.out.println("【采天山玄铁】→【折叠锻打9次】");
return new 青虹剑胚(); // 青虹剑特制剑胚
}
@Override
void 淬火处理(剑胚 胚) {
System.out.println("【寒潭浸泡3时辰】→【烈日暴晒1日】");
胚.硬度 = 90; // 特殊淬火效果
}
}
// 鱼肠匕流水线(如同唐门暗器)
class 鱼肠匕工坊 extends 铸剑模版 {
@Override
剑胚 打造剑胚() {
System.out.println("【熔炼五毒金属】→【弯曲蛇形锻造】");
return new 蛇形剑胚(); // 匕首专用剑胚
}
@Override
void 淬火处理(剑胚 胚) {
System.out.println("【浸入蝎毒液】→【阴干于古墓】");
胚.淬毒等级 = "见血封喉";
}
}
使用示例:武林人士下单
public class 江湖 {
public static void main(String[] args) {
// 武当掌门订购青虹剑
铸剑模版 武当订单 = new 青虹剑工坊();
剑 真武剑 = 武当订单.开始铸剑();
真武剑.展示属性(); // 输出:天山玄铁材质,硬度90
// 唐门刺客订购鱼肠匕
铸剑模版 唐门订单 = new 鱼肠匕工坊();
剑 毒牙匕 = 唐门订单.开始铸剑();
毒牙匕.展示属性(); // 输出:蛇形带毒,淬毒等级见血封喉
}
}
核心思想图解
铸剑模版
/ \
青虹剑工坊 鱼肠匕工坊
↓ ↓
青虹剑胚 蛇形剑胚
寒潭淬火 毒液淬火
此后,小黄的生意蒸蒸日上,按照这样子下去,财富自由指日可待。但是
【卷三】风云再起:抽象工厂参悟
西域来客:成套兵器的挑战
三年后的深秋,波斯商队驼铃惊破铸剑坊的平静。大胡子首领阿卜杜拉拍出羊皮卷:「我们要三百套大马士革风格兵器——弯刀需带新月纹,圆盾要有星辰图,两者纹路必须严丝合缝!」
小黄望着图纸倒吸冷气:旧式工坊虽能单铸刀剑,却无法保证成套兵器的风格统一性。更棘手的是,当他想新增波斯地毯
作为赠品时,发现需要修改所有工坊:
// 旧版工厂的局限(需不断添加新方法)
class 大马士革工坊 {
弯刀 铸弯刀() { ... }
圆盾 铸圆盾() { ... }
// 新增地毯方法破坏原有结构
地毯 织地毯() { ... }
}
三日夜不眠后,小黄突然想起《天工开物录》末页的模糊字迹——"成套者,同根同源也"。霎时体内真气如黄河奔涌,在奇经八脉中勾勒出全新铸剑图!
天道启示:抽象工厂架构
// 兵器套装标准(如同门派风格规范)
interface 西域兵器套 {
弯刀 造弯刀();
圆盾 造圆盾();
箭矢 造箭矢();
}
// 大马士革套装实现(具体门派风格)
class 大马士革套装 implements 西域兵器套 {
private 锻造术 锻造风格 = new 波纹锻造术(127层);
@Override
public 弯刀 造弯刀() {
return new 新月弯刀(锻造风格); // 注入统一风格
}
@Override
public 圆盾 造圆盾() {
return new 星辰圆盾(锻造风格.镜像()); // 保持风格统一
}
@Override
public 箭矢 造箭矢() {
return new 流火箭(锻造风格.简化());
}
}
// 波斯套装实现(不同风格)
class 波斯套装 implements 西域兵器套 {
private 锻造术 锻造风格 = new 藤蔓纹锻造术();
@Override
public 弯刀 造弯刀() { ... } // 统一使用藤蔓纹
@Override
public 圆盾 造圆盾() { ... }
@Override
public 箭矢 造箭矢() { ... }
}
实战演示:套装兵器铸造
public class 波斯商队 {
public static void main(String[] args) {
// 选择套装风格
西域兵器套 当前套装 = new 大马士革套装();
// 生产成套兵器
弯刀 主武器 = 当前套装.造弯刀();
圆盾 副武器 = 当前套装.造圆盾();
箭矢 远程武器 = 当前套装.造箭矢();
// 自动校验风格一致性
if (主武器.纹样 == 副武器.纹样) {
System.out.println("✅ 套装风格验证通过");
}
}
}
奇迹诞生:当成套兵器放入熔炉淬火时,刀盾竟在空中组成星座图腾,箭矢自动飞入图腾中心,化作流星划破夜空。波斯工匠们纷纷跪拜:「这是真主赐予的神迹工艺!」
后续
独孤小黄凭借这两套铸剑工艺,名声大噪。正当小黄志得意满时,皇宫传来急诏——要求铸造可随时变换风格的智能兵器。这即将引出更精妙的动态工厂模式,以及那个困扰武林百年的终极谜题:依赖注入是否就是传说中的「以无招胜有招」......请期待后续。
模式对比宝典