1. 设计模式入门:为什么每个Java开发者都需要掌握
刚入行那会儿,我总觉得设计模式是那些架构师才需要懂的高级玩意儿。直到有次接手一个老项目,看到满屏的if-else和重复代码,才明白为什么前辈总说"不懂设计模式,写再多代码也是初级工"。设计模式就像是编程中的成语,用好了能让代码更优雅、更易维护。
举个真实案例:去年我们电商系统要做优惠活动,最初版本用了大量条件判断来处理不同类型的优惠券。结果每次新增优惠类型都要修改核心逻辑,测试用例越写越多。后来用策略模式重构后,新优惠类型只需新增一个策略类,核心代码完全不用动。这就是设计模式的威力——它不是炫技,而是解决实际问题的工具箱。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 设计模式核心分类与适用场景
2.1 创建型模式:对象的诞生艺术
工厂方法模式是我最推荐新手优先掌握的。记得第一次用工厂方法是在支付模块开发时,需要根据支付类型(支付宝、微信、银联)创建不同的支付处理器。原始写法是这样的:
java复制if("alipay".equals(type)){
processor = new AlipayProcessor();
} else if("wechat".equals(type)){
processor = new WechatProcessor();
}
// 更多if-else...
用工厂方法改造后:
java复制public interface PaymentFactory {
PaymentProcessor createProcessor();
}
public class AlipayFactory implements PaymentFactory {
@Override
public PaymentProcessor createProcessor() {
return new AlipayProcessor();
}
}
// 使用时
PaymentFactory factory = FactoryCreator.getFactory(type);
PaymentProcessor processor = factory.createProcessor();
关键技巧:工厂类通常设计为单例,可以考虑用枚举实现,既线程安全又防反射攻击
2.2 结构型模式:构建代码大厦的钢筋
适配器模式在对接第三方库时特别有用。最近我们系统要接入新的短信服务商,但他们的SDK接口与我们现有系统不兼容。这时候不需要重写业务逻辑,只需做个适配器:
java复制public class NewSmsAdapter implements OurSmsService {
private final ThirdPartySmsLib thirdPartyLib;
public NewSmsAdapter(ThirdPartySmsLib lib) {
this.thirdPartyLib = lib;
}
@Override
public void send(String phone, String content) {
thirdPartyLib.sendSms(
new SmsRequest(phone, content, "default-template")
);
}
}
这样业务代码完全不用修改,只需在初始化时注入适配器实例。这种"用新瓶装旧酒"的思路,在系统演进过程中特别实用。
2.3 行为型模式:对象间的沟通之道
观察者模式在事件驱动系统中必不可
