public bool Execute() { // In real implementation make request to expensivePaymentGateway if (_expensiveGateWay.IsGatewayAvaibale()) { return(_expensiveGateWay.MakePayment(_amount)); } if (_cheapGateWay.IsGatewayAvaibale()) { return(_cheapGateWay.MakePayment(_amount)); } return(false); }