Advertisement
Guest User

Untitled

a guest
Oct 17th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.39 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace _14_Composite
  7. {
  8.     /*
  9.      * Управление солдатами
  10.      */
  11.     class Program
  12.     {
  13.         static void Main(string[] args)
  14.         {
  15.             IMovableUnit unit;
  16.  
  17.             var squad = new Squad();
  18.             squad.Add(new SingleUnit());
  19.             squad.Add(new SingleUnit());
  20.             squad.Add(new SingleUnit());
  21.  
  22.             var squad2 = new Squad();
  23.             squad2.Add(new SingleUnit());
  24.             squad2.Add(new SingleUnit());
  25.             squad2.Add(new SingleUnit());
  26.  
  27.             var squad3 = new Squad();
  28.             squad3.Add(squad);
  29.             squad3.Add(squad2);
  30.  
  31.             unit = squad3;
  32.  
  33.             var getHealth = new GetTotalHealth();
  34.             unit.Accept(getHealth);
  35.             Console.WriteLine(getHealth.GetResult());
  36.  
  37.             unit.Move();
  38.  
  39.         }
  40.     }
  41.  
  42.     interface IMovableUnit
  43.     {
  44.         void Move();
  45.         void Accept(IMovableUnitVisitor visitor);
  46.     }
  47.  
  48.     interface IMovableUnitVisitor
  49.     {
  50.         void Visit(SingleUnit unit);
  51.         void Visit(Squad squad);
  52.     }
  53.  
  54.     class GetTotalHealth : IMovableUnitVisitor
  55.     {
  56.         private int _total;
  57.  
  58.         public int GetResult()
  59.         {
  60.             return _total;
  61.         }
  62.  
  63.         public void Visit(SingleUnit unit)
  64.         {
  65.             _total = unit.Health;
  66.         }
  67.  
  68.         public void Visit(Squad squad)
  69.         {
  70.            
  71.         }
  72.     }
  73.  
  74.     class SingleUnit : IMovableUnit
  75.     {
  76.         public int Health;
  77.  
  78.         public void Accept(IMovableUnitVisitor visitor)
  79.         {
  80.             visitor.Visit(this);
  81.         }
  82.  
  83.         public void Move()
  84.         {
  85.  
  86.         }
  87.     }
  88.  
  89.     class Squad : IMovableUnit
  90.     {
  91.         private List<IMovableUnit> _movableUnits = new List<IMovableUnit>();
  92.  
  93.         public void Accept(IMovableUnitVisitor visitor)
  94.         {
  95.             visitor.Visit(this);
  96.             foreach (var unit in _movableUnits)
  97.             {
  98.                 unit.Accept(visitor);
  99.             }
  100.         }
  101.  
  102.         public void Add(IMovableUnit unit)
  103.         {
  104.             _movableUnits.Add(unit);
  105.         }
  106.  
  107.         public void Move()
  108.         {
  109.             foreach (var unit in _movableUnits)
  110.             {
  111.                 unit.Move();
  112.             }
  113.         }
  114.  
  115.        
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement