【424、单例实现的策略模式】

64 阅读1分钟
public class SingletonStrategy {
    // 单例实现
    private static SingletonStrategy instance;
    
    private SingletonStrategy() {}
    
    public static SingletonStrategy getInstance() {
        if (instance == null) {
            instance = new SingletonStrategy();
        }
        return instance;
    }
    
    // 策略模式实现
    private PaymentStrategy paymentStrategy;
    
    public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
        this.paymentStrategy = paymentStrategy;
    }
    
    public void pay(double amount) {
        paymentStrategy.pay(amount);
    }
}

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

public class CreditCardPayment implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("Paid " + amount + " using credit card.");
    }
}

public class PayPalPayment implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("Paid " + amount + " using PayPal.");
    }
}

public class Main {
    public static void main(String[] args) {
        SingletonStrategy singleton = SingletonStrategy.getInstance();
        
        singleton.setPaymentStrategy(new CreditCardPayment());
        singleton.pay(100.0);
        
        singleton.setPaymentStrategy(new PayPalPayment());
        singleton.pay(50.0);
    }
}

在上面的示例中,SingletonStrategy 类实现了单例模式,PaymentStrategy 接口定义了支付策略,CreditCardPaymentPayPalPayment 类实现了不同的支付策略。Main 类中的代码演示了如何在运行时设置不同的支付策略并使用单例实现的 SingletonStrategy 对象进行支付。