融合设计模式的思路
- 策略模式:支付模块中有多种支付方式,如支付宝支付、微信支付、银行卡支付等。每种支付方式的具体实现不同,但都有统一的支付行为。策略模式可将每种支付方式封装成一个具体策略类,实现统一的支付接口。这样当新增支付方式时,只需新增一个具体策略类,而无需修改原有代码,符合开闭原则。
- 工厂模式:客户端调用支付功能时,不希望直接创建具体的支付策略对象,因为这会增加客户端与具体支付方式的耦合度。工厂模式可以负责创建具体的支付策略对象,客户端只需向工厂请求所需的支付方式,而无需关心具体创建过程。
实现步骤
- 定义支付接口:
public interface Payment {
String pay(double amount);
}
- 实现具体支付策略类:
public class AlipayPayment implements Payment {
@Override
public String pay(double amount) {
return "使用支付宝支付成功,金额:" + amount;
}
}
- **微信支付**:
public class WechatPayment implements Payment {
@Override
public String pay(double amount) {
return "使用微信支付成功,金额:" + amount;
}
}
- 创建支付工厂:
public class PaymentFactory {
public static Payment createPayment(String type) {
if ("alipay".equals(type)) {
return new AlipayPayment();
} else if ("wechat".equals(type)) {
return new WechatPayment();
}
return null;
}
}
- 客户端调用:
public class Client {
public static void main(String[] args) {
Payment payment = PaymentFactory.createPayment("alipay");
if (payment != null) {
String result = payment.pay(100.0);
System.out.println(result);
}
}
}
对代码的影响
- 可扩展性:新增支付方式时,只需创建新的支付策略类并在工厂类中添加相应创建逻辑,无需修改其他业务代码,极大提高了可扩展性。
- 可维护性:每种支付方式的代码封装在独立的策略类中,代码结构清晰,易于理解和维护。如果支付方式的实现有变动,只需修改对应的策略类,不会影响其他部分。
- 性能:在正常情况下,策略模式和工厂模式的引入对性能影响较小。但如果创建大量的支付策略对象,可能会因为对象创建开销和内存占用对性能产生一定影响。不过在电商支付模块场景下,通常支付操作不会过于频繁创建大量对象,这种影响可忽略不计。