yakovmonarh

Цепочка обязанностей (Chai of responsepility)

Sep 10th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.93 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Threading;
  5. using System.Linq;
  6. using System.Threading.Tasks;
  7.  
  8. class Program
  9. {
  10.    static void Main(string[] args)
  11.    {
  12.     Receiver receiver = new Receiver(false, true, true);
  13.     PaymentHandler bankPaymentHandler = new BankPaymentHandler();
  14.     PaymentHandler moneyPaymentHandler = new MoneyPaymentHandler();
  15.     PaymentHandler paypalPaymentHandler = new PayPalPaymentHandler();
  16.    
  17.     bankPaymentHandler.Successor = paypalPaymentHandler;
  18.     paypalPaymentHandler.Successor = moneyPaymentHandler;
  19.    
  20.     bankPaymentHandler.Handle(receiver);
  21.    
  22.     Console.ReadLine();
  23.    }
  24. }
  25.  
  26. class Receiver
  27. {
  28.     public bool BankTransfer{get;set;}
  29.     public bool PayPalTransfer{get;set;}
  30.     public bool MoneyTransfer{get;set;}
  31.    
  32.     public Receiver(bool bank, bool paypal, bool money)
  33.     {
  34.         this.BankTransfer = bank;
  35.         this.PayPalTransfer = paypal;
  36.         this.MoneyTransfer = money;
  37.     }
  38. }
  39.  
  40. abstract class PaymentHandler
  41. {
  42.     public PaymentHandler Successor{get;set;}
  43.     public abstract void Handle(Receiver recceiver);   
  44. }
  45.  
  46. class BankPaymentHandler : PaymentHandler
  47. {
  48.     public override void Handle(Receiver recceiver)
  49.     {
  50.         if(recceiver.BankTransfer == true)
  51.             Console.WriteLine("Выполняем банковский перевод");
  52.         else if(Successor != null)
  53.             Successor.Handle(recceiver);
  54.     }
  55. }
  56.  
  57. class MoneyPaymentHandler : PaymentHandler
  58. {
  59.     public override void Handle(Receiver recceiver)
  60.     {
  61.         if(recceiver.MoneyTransfer == true)
  62.             Console.WriteLine("Выполняем денежный перевод");
  63.         else if(Successor != null)
  64.             Successor.Handle(recceiver);
  65.     }
  66. }
  67.  
  68. class PayPalPaymentHandler : PaymentHandler
  69. {
  70.     public override void Handle(Receiver recceiver)
  71.     {
  72.         if(recceiver.PayPalTransfer == true)
  73.             Console.WriteLine("Выполняем перевод PayPal");
  74.         else if(Successor != null)
  75.             Successor.Handle(recceiver);
  76.     }
  77. }
Add Comment
Please, Sign In to add comment