代码一下-抽象工厂模式

好的,以下是一个 Java 版本的抽象工厂模式示例代码:

首先,我们需要定义支付网关接口 PaymentGateway:

public interface PaymentGateway {
    void pay(double amount);
}

然后,我们定义多个实现该接口的类,如 AlipayGateway、WechatPayGateway、UnionPayGateway:

public class AlipayGateway implements PaymentGateway {
    @Override
    public void pay(double amount) {
        System.out.println("使用支付宝支付 " + amount + " 元");
    }
}

public class WechatPayGateway implements PaymentGateway {
    @Override
    public void pay(double amount) {
        System.out.println("使用微信支付 " + amount + " 元");
    }
}

public class UnionPayGateway implements PaymentGateway {
    @Override
    public void pay(double amount) {
        System.out.println("使用银联支付 " + amount + " 元");
    }
}

接着,我们定义一个抽象工厂类 PaymentGatewayFactory:

public interface PaymentGatewayFactory {
    PaymentGateway createPaymentGateway();
}

然后,为每个具体的支付网关实现一个工厂类,如 AlipayGatewayFactory、WechatPayGatewayFactory、UnionPayGatewayFactory:

public class AlipayGatewayFactory implements PaymentGatewayFactory {
    @Override
    public PaymentGateway createPaymentGateway() {
        return new AlipayGateway();
    }
}

public class WechatPayGatewayFactory implements PaymentGatewayFactory {
    @Override
    public PaymentGateway createPaymentGateway() {
        return new WechatPayGateway();
    }
}

public class UnionPayGatewayFactory implements PaymentGatewayFactory {
    @Override
    public PaymentGateway createPaymentGateway() {
        return new UnionPayGateway();
    }
}

最后,在支付模块中,我们可以使用相应的工厂类来创建支付网关对象,如:

public class PaymentModule {
    private PaymentGatewayFactory gatewayFactory;
    
    public PaymentModule(PaymentGatewayFactory gatewayFactory) {
        this.gatewayFactory = gatewayFactory;
    }

    public void pay(double amount) {
        PaymentGateway gateway = gatewayFactory.createPaymentGateway();
        gateway.pay(amount);
    }
}

public class Main {
    public static void main(String[] args) {
        PaymentModule paymentModule = new PaymentModule(new AlipayGatewayFactory());
        paymentModule.pay(100.0);

        paymentModule = new PaymentModule(new WechatPayGatewayFactory());
        paymentModule.pay(200.0);

        paymentModule = new PaymentModule(new UnionPayGatewayFactory());
        paymentModule.pay(300.0);
    }
}

在这个示例中,我们通过抽象工厂模式实现了支付模块与多个支付网关的交互,而无需关心它们的具体类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值