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; 

                               }