public IAuthorizablePaymentProcessor GetAuthorizableProcessor(IPaymentItem paymentItem) { var paymentProcessor = default(IAuthorizablePaymentProcessor); if (paymentItem.PaymentType == PaymentType.CreditCard) { paymentProcessor = new CreditCardPaymentProcessor(); } paymentProcessor?.Initialize(paymentItem); return(paymentProcessor); }
public ICapturablePaymentProcessor GetCapturablePaymentProcessor(IPaymentItem paymentItem) { ICapturablePaymentProcessor paymentProcessor; switch (paymentItem.PaymentType) { case PaymentType.Cash: paymentProcessor = new CashPaymentProcessor(); break; case PaymentType.CreditCard: paymentProcessor = new CreditCardPaymentProcessor(); break; default: throw new ArgumentOutOfRangeException(nameof(paymentItem.PaymentType), "Invalid payment type"); } paymentProcessor.Initialize(paymentItem); return(paymentProcessor); }