public void Process(ReturnOrder ReturnOrder)
        {
            ReturnProcessTemplate returnProcess = ReturnProcessFactory.CreateFrom(ReturnOrder.Action);

            returnProcess.Process(ReturnOrder);

            // Code to refund the back to the customer...
        }
 protected override void CalculateRefundFor(ReturnOrder ReturnOrder)
 {
     ReturnOrder.AmountToRefund = ReturnOrder.PricePaid + ReturnOrder.PostageCost;
 }
 protected override void GenerateReturnTransactionFor(ReturnOrder ReturnOrder)
 {
     // Code to send generate order that sends faulty item back to
     // manufacturer...
 }
 protected override void GenerateReturnTransactionFor(ReturnOrder ReturnOrder)
 {
     // Code to put items back into stock...
 }
 public void Process(ReturnOrder ReturnOrder)
 {
     GenerateReturnTransactionFor(ReturnOrder);
     CalculateRefundFor(ReturnOrder);
 }
 protected abstract void CalculateRefundFor(ReturnOrder ReturnOrder);
 protected abstract void GenerateReturnTransactionFor(ReturnOrder ReturnOrder);