前言
确实,没有设计模式也能完成开发。但为什么还需要它们?为了代码的层次感、可读性以及维护性。面对复杂多变的业务场景,尤其是要求高适配性和扩展性的地方,设计模式能提供成熟的解决方案。当然,不要为了用而用,简单稳定的业务不必强求。
接下来结合实际案例探讨一下设计模式的一些原则。
1. 开闭原则
public class Seller {
public BigDecimal sellCar(Car car) {
return car.getPrice();
}
}
上面模拟了 4S 店销售卖车。假设老板突然搞促销:双十一打折。如果在 sellCar 方法内直接增加计算逻辑,势必影响整个业务,导致所有车都打折,且后续活动结束或升级时还需反复改动。如果直接在 Car 类里操作,各种逻辑判断会让代码臃肿不堪。
对于复杂多变的业务,设计模式能解决上述问题。最重要的原则就是开闭原则(Open-Closed Principle):软件实体如类、模块和函数应该对扩展开放,对修改关闭。我们需要将业务行为抽象出来,使用抽象构建,具体业务通过实现来解决。
例如,创建一个 DiscountCar 继承自 Car,这样 sellCar 执行什么逻辑就取决于具体的实现,不会影响原有逻辑,保证接口可靠性和稳定性。
public class DiscountCar extends Car {
private BigDecimal price;
private BigDecimal discount;
@Override
public BigDecimal getPrice() {
return price.multiply(discount);
}
}
2. 依赖倒置原则
经过一系列活动,老板想扩展周边业务,让销售同时卖玻璃水、防冻液等。需求抛给程序员后,如果一直增加 sellGlassWater、sellAntifreeze 等方法,未来卖大米、鸡蛋饼怎么办?
我们需要抽象所有卖东西的场景。把卖的物品抽象成概念(Java 中对应接口),把卖的行为抽象成 sell 方法。
public interface Any {
String getName();
BigDecimal getPrice();
}
public class Seller {
public BigDecimal {
any.getPrice();
}
}


