电商平台支持多种支付方式,包括信用卡、PayPal、微信支付等。每种支付方式的实现细节不同,但它们共享相同的接口。我们希望系统能够在运行时根据用户的选择动态创建相应的支付对象。
为什么要使用工厂方法模式
使用工厂方法模式可以将对象的创建逻辑封装在具体的工厂类中,这样当需要添加新的支付方式时,我们只需新增一个具体的支付类和相应的工厂类,而无需修改现有的代码。
标准工厂方法模式图
4. 业务工厂方法模式图
5. 业务代码参考
信用卡支付工厂
interface Payment {
void process();
}
class CreditCardPayment implements Payment {
public void process() {
System.out.println("Processing credit card payment.");
}
}
class CreditCardPaymentFactory implements PaymentFactory {
public Payment createPayment() {
return new CreditCardPayment();
}
}
PayPal支付工厂
class PayPalPayment implements Payment {
public void process() {
System.out.println("Processing PayPal payment.");
}
}
class PayPalPaymentFactory implements PaymentFactory {
public Payment createPayment() {
return new PayPalPayment();
}
}
微信支付工厂
class WeChatPayment implements Payment {
public void process() {
System.out.println("Processing WeChat payment.");
}
}
class WeChatPaymentFactory implements PaymentFactory {
public Payment createPayment() {
return new WeChatPayment();
}
}
6. 使用工厂方法模式的好处
工厂方法模式解决了支付方式多样性的问题,允许系统在运行时根据用户的选择动态创建支付对象。它提供了以下好处:
- 扩展性:添加新的支付方式时无需修改现有代码。
- 解耦:客户端代码与具体支付实现分离。
- 维护性:集中管理支付对象的创建逻辑。
7. 其他使用工厂方法模式场景参考
工厂方法模式适用于任何需要按需创建对象的场景,例如:
- GUI组件:根据不同平台创建不同的按钮或窗口。
- 数据库连接:根据不同的数据库类型创建连接。
- 日志记录器:根据不同的日志策略创建记录器。
8. 可参考开源框架
许多开源框架使用工厂方法模式,例如:
- Spring Framework:用于创建和管理Bean的实例。
- JDBC:用于创建与特定数据库驱动程序兼容的连接。
总结
工厂方法模式是一种灵活且强大的创建型模式,它允许系统在不修改现有代码的情况下扩展新功能。通过将创建逻辑封装在子类中,工厂方法模式提高了系统的可维护性和可扩展性。
肖哥弹架构 
![[爱了]](/js/img/d1.gif)
![[尴尬]](/js/img/d16.gif)