class SenderCheck : AbsSender { Sender sender = new Sender(); OrderSelector orderSelector = new OrderSelector(); IOrderType orderType; DeliveryContext deliveryContext = new DeliveryContext(); public override void SendOrder(Client client, float weight, int amount, IDeliveryType delivery) { deliveryContext._weight = weight; deliveryContext._amount = amount; deliveryContext.SetDeliveryType(delivery); orderType = orderSelector.Select(weight); if (client.Pay(orderType.GetOrderSum(weight, deliveryContext.DelivetyCost))) { { sender.SendOrder(client, weight, amount, delivery); client.GetOrder(); } } else { Console.WriteLine("Client is not payed for order"); } }
abstract class AbsSender { public abstract void SendOrder(Client client, float weight, int amount, IDeliveryType delivery); }
class Sender : AbsSender { public override void SendOrder(Client client, float weight, int amount, IDeliveryType delivery) { Console.WriteLine("Send order for client"); }
class DeliveryContext { public IDeliveryType _deliveryType; public float _weight; public int _amount; public void SetDeliveryType(IDeliveryType delivery) { _deliveryType = delivery; }