静态工厂模式(Static Factory Method Pattern):支付接口封装实战案例分析

1,182 阅读4分钟

image.png

肖哥弹架构 跟大家“弹弹” 业务中设计模式的使用,需要代码关注

欢迎 点赞,点赞,点赞。

关注公号Solomon肖哥弹架构获取更多精彩内容

在电商平台中,需要集成多种支付方式,如支付宝、微信支付、银行卡支付等。为了简化支付流程并统一支付接口,静态工厂模式提供了一种实例优雅的解决方案。

2. 为什么要使用静态工厂设计模式

静态工厂模式通过一个静态方法来创建对象,这样可以不必知道具体的类名,只需知道对应的工厂方法即可获取需要的实例。

3. 标准静态工厂设计模式图

4. 业务静态工厂设计模式图

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()

总结

静态工厂模式提供了一种静态的创建方法,使得对象的创建更加灵活和方便,同时保持了代码的简洁性。

历史热点文章