public virtual IBankPaymentGateway CreatePaymentGateway(PaymentMethod method, IProduct product) { IBankPaymentGateway gateway = null; switch (method) { case PaymentMethod.Bank_One: gateway = new BankOne(); break; case PaymentMethod.Bank_Two: gateway = new BankTwo(); break; case PaymentMethod.Best_For_Me: if (product.Price < 50) { gateway = new BankTwo(); } else { gateway = new BankOne(); } break; default: gateway = new BankOne(); break; } return(gateway); }
public void MakePayment(PaymentMethod method, IProduct product) { IPaymentGatewayFactory factory = new PaymentGatewayFactory2(); gateway = factory.CreatePaymentGateway(method, product); gateway.MakePayment(product); }
public override sealed IBankPaymentGateway CreatePaymentGateway(PaymentMethod method, IProduct product) { IBankPaymentGateway gateway = null; switch (method) { case PaymentMethod.Pay_Pal: gateway = new PayPal(); break; case PaymentMethod.Bill_Desk: gateway = new BillDesk(); break; default: gateway = base.CreatePaymentGateway(method, product); break; } return(gateway); }