import io.github.pukkertje.peninsula.annotations.*; public interface PaymentStrategy { void pay(int amount); } @Strategy public class PayPalPayment implements PaymentStrategy { private final String username; private final String password; @Inject public PayPalPayment(@Config("paypal.username") String username, @Config("paypal.password") String password) { this.username = username; this.password = password; } public void pay(int amount) { } } @Strategy public class CreditCardPayment implements PaymentStrategy { private final String cardNumber; private final String cvv; @Inject public CreditCardPayment(@Config("creditcard.number") String cardNumber, @Config("creditcard.cvv") String cvv) { this.cardNumber = cardNumber; this.cvv = cvv; } public void pay(int amount) { } } @Component public class PaymentService { private final PaymentStrategy paymentStrategy; @Inject public PaymentService(PaymentStrategy paymentStrategy) { this.paymentStrategy = paymentStrategy; } public void processPayment(int amount) { paymentStrategy.pay(amount); } }


上一篇:
下一篇:
切换中文