image.png
在电商平台中,需要集成多种支付方式,如支付宝、微信支付、银行卡支付等。为了简化支付流程并统一支付接口,静态工厂模式提供了一种实例优雅的解决方案。
2. 为什么要使用静态工厂设计模式
静态工厂模式通过一个静态方法来创建对象,这样可以不必知道具体的类名,只需知道对应的工厂方法即可获取需要的实例。
3. 标准静态工厂设计模式图
image.png
4. 业务静态工厂设计模式图
image.png
5. 业务代码参考
// 支付接口
interface Payment {
boolean pay(double amount);
}
// 支付宝支付实现
class AlipayPayment implements Payment {
@Override
public boolean pay(double amount) {
// 调用支付宝支付API
System.out.println("支付宝支付:" + amount);
return true;
}
}
// 微信支付实现
class WechatPayment implements Payment {
@Override
public boolean pay(double amount) {
// 调用微信支付API
System.out.println("微信支付:" + amount);
return true;
}
}
// 银行卡支付实现
class BankPayment implements Payment {
@Override
public boolean pay(double amount) {
// 调用银行卡支付API
System.out.println("银行卡支付:" + amount);
return true;
}
}
// 支付工厂类
class PaymentFactory {
public static Payment createPaymentMethod(String type) {
if (type == null) {
throw new IllegalArgumentException("支付类型不能为空");
}
switch (type) {
case "alipay":
return new AlipayPayment();
case "wechat":
return new WechatPayment();
case "bank":
return new BankPayment();
default:
throw new IllegalArgumentException("未知的支付类型:" + type);
}
}
}
// 客户端使用
class ECommercePaymentSystem {
public static void main(String[] args) {
Payment payment = PaymentFactory.createPaymentMethod("alipay");
payment.pay(100.0);
payment = PaymentFactory.createPaymentMethod("wechat");
payment.pay(200.0);
payment = PaymentFactory.createPaymentMethod("bank");
payment.pay(300.0);
}
}
6. 使用静态工厂设计模式的好处
- 简化对象创建:客户端无需知道具体的类名,只需知道对应的工厂方法即可。
- 扩展性:新增支付方式时,只需添加相应的类和修改工厂方法。
7. 其他使用静态工厂设计模式场景参考
- 数据库连接:根据不同的数据库类型创建不同的连接对象。
- 配置文件解析:根据不同的配置文件格式创建不同的解析器。
8. 可参考开源框架
-
Java SDK:许多Java标准库中的类都提供了静态工厂方法,如
Integer.valueOf()
。
总结
静态工厂模式提供了一种静态的创建方法,使得对象的创建更加灵活和方便,同时保持了代码的简洁性。
历史热点文章
- 委托模式(Delegation Pattern):多渠道消息发送服务实战案例分析
- 外观模式(Facade Pattern):微服务架构中的数据库访问实战案例分析
- 代理模式(Proxy Pattern):权限校验API调用实战案例分析
- 桥接模式(Bridge Pattern):多样式用户界面组件实战案例分析
- 组合模式(Composite Pattern): 在线教育平台课程管理实战案例分析
- 享元模式(Flyweight Pattern):网页游戏中的角色对象管理实战案例分析
- 观察者模式(Observer Pattern):股票交易系统实战案例分析
- 策略模式(Strategy Pattern):电商平台的优惠券系统实战案例分析
- 模板方法模式(Template Method Pattern):视频播放应用实战案例分析
- 命令模式(Command Pattern):网络爬虫任务队列实战案例分析
- 迭代器模式(Iterator Pattern):电商平台商品分类浏览实战案例分析
- 中介者模式(Mediator Pattern):即时通讯软件实战案例分析
- 备忘录模式(Memento Pattern):游戏存档系统实战案例分析
- 状态模式(State Pattern):电商平台订单状态管理实战案例分析
- 责任链模式(Chain of Responsibility Pattern):电商平台的订单审批流程实战案例分析
- 访问者模式(Visitor Pattern):电商平台商品访问统计实战案例分析
- 工厂方法模式(Factory Method Pattern): 电商多种支付实战案例分析
- 抽象工厂模式(Abstract Factory Pattern):多风格桌面应用实战案例分析
- 建造者模式(Builder Pattern): 在线订单系统实战案例分析
- 原型模式(Prototype Pattern): 云服务环境配置实战案例分析
- 适配器模式(Adapter Pattern):第三方支付集成实战案例分析
- 装饰器模式(Decorator Pattern):电商平台商品价格策略实战案例分析
- 单例模式(Singleton Pattern):购物车实战案例分析