Advertisement
Mizzzlo

Untitled

Sep 18th, 2023
839
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.50 KB | None | 0 0
  1. namespace IMJunior
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             var orderForm = new OrderForm();
  8.  
  9.             var paymentHandler = orderForm.ShowForm();
  10.  
  11.             paymentHandler.MakeCallback();
  12.         }
  13.     }
  14.     public class OrderForm
  15.     {
  16.         private const string _qiwi = "QIWI";
  17.         private const string _webMoney = "WebMoney";
  18.         private const string _card = "Card";
  19.  
  20.         public ISystemCallback ShowForm()
  21.         {
  22.             Console.WriteLine("Мы принимаем: QIWI, WebMoney, Card");
  23.  
  24.             //симуляция веб интерфейса
  25.             Console.WriteLine("Какое системой вы хотите совершить оплату?");
  26.  
  27.             string systemId = Console.ReadLine();
  28.  
  29.             ISystemCallback result = systemId switch
  30.             {
  31.                 "QIWI" => new QiwiSystemCallback(new QiwiPaymentHandler(_qiwi)),
  32.                 "WebMoney" => new WebMoneySystemCallback(new WebMoneyPaymentHandler(_webMoney)),
  33.                 "Card" => new CardSystemCallback(new CardPaymentHandler(_card)),
  34.                 _ => default
  35.             };
  36.  
  37.             return result;
  38.         }
  39.     }
  40.  
  41.     public abstract class SystemCallback : ISystemCallback
  42.     {
  43.         protected IPaymentHandler PaymentHandler;
  44.  
  45.         protected SystemCallback(IPaymentHandler paymentHandler)
  46.         {
  47.             PaymentHandler = paymentHandler;
  48.         }
  49.  
  50.         public abstract void MakeCallback();
  51.     }
  52.  
  53.     public class QiwiSystemCallback : SystemCallback
  54.     {
  55.         public QiwiSystemCallback(IPaymentHandler paymentHandler) : base(paymentHandler)
  56.         {
  57.         }
  58.  
  59.         public override void MakeCallback()
  60.         {
  61.             Console.WriteLine("Перевод на страницу QIWI...");
  62.             PaymentHandler.ShowPaymentResult();
  63.         }
  64.     }
  65.  
  66.     public class WebMoneySystemCallback : SystemCallback
  67.     {
  68.         public WebMoneySystemCallback(IPaymentHandler paymentHandler) : base(paymentHandler)
  69.         {
  70.         }
  71.  
  72.         public override void MakeCallback()
  73.         {
  74.             Console.WriteLine("Вызов API WebMoney...");
  75.             PaymentHandler.ShowPaymentResult();
  76.         }
  77.     }
  78.  
  79.     public class CardSystemCallback : SystemCallback
  80.     {
  81.         public CardSystemCallback(IPaymentHandler paymentHandler) : base(paymentHandler)
  82.         {
  83.         }
  84.  
  85.         public override void MakeCallback()
  86.         {
  87.             Console.WriteLine("Вызов API банка эмитера карты Card...");
  88.             PaymentHandler.ShowPaymentResult();
  89.         }
  90.     }
  91.  
  92.     public abstract class PaymentHandler : IPaymentHandler
  93.     {
  94.         protected readonly string SystemId;
  95.  
  96.         protected PaymentHandler(string systemId)
  97.         {
  98.             SystemId = systemId;
  99.         }
  100.  
  101.         public virtual void ShowPaymentResult()
  102.         {
  103.             Console.WriteLine($"Вы оплатили с помощью {SystemId}");
  104.         }
  105.     }
  106.  
  107.     public class QiwiPaymentHandler : PaymentHandler
  108.     {
  109.         public QiwiPaymentHandler(string systemId) : base(systemId)
  110.         {
  111.         }
  112.  
  113.         public override void ShowPaymentResult()
  114.         {
  115.             base.ShowPaymentResult();
  116.             Console.WriteLine("Проверка платежа через QIWI...");
  117.             Console.WriteLine("Оплата прошла успешно!");
  118.         }
  119.     }
  120.  
  121.     public class WebMoneyPaymentHandler : PaymentHandler
  122.     {
  123.         public WebMoneyPaymentHandler(string systemId) : base(systemId)
  124.         {
  125.         }
  126.  
  127.         public override void ShowPaymentResult()
  128.         {
  129.             base.ShowPaymentResult();
  130.             Console.WriteLine("Проверка платежа через WebMoney...");
  131.             Console.WriteLine("Оплата прошла успешно!");
  132.         }
  133.     }
  134.  
  135.     public class CardPaymentHandler : PaymentHandler
  136.     {
  137.         public CardPaymentHandler(string systemId) : base(systemId)
  138.         {
  139.         }
  140.  
  141.         public override void ShowPaymentResult()
  142.         {
  143.             base.ShowPaymentResult();
  144.             Console.WriteLine("Проверка платежа через Card...");
  145.             Console.WriteLine("Оплата прошла успешно!");
  146.         }
  147.     }
  148.  
  149.     public interface ISystemCallback
  150.     {
  151.         public abstract void MakeCallback();
  152.  
  153.     }
  154.  
  155.     public interface IPaymentHandler
  156.     {
  157.         public void ShowPaymentResult();
  158.     }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement