Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.48 KB | None | 0 0
  1. public void Smth()
  2.     {
  3.         var list = new List<House>() { new IntsHouse(), new StringsHouse() };
  4.         var visit1 = new DoublerVisitor();
  5.         var visit2 = new VisitorVisitor();
  6.  
  7.         list.ForEach(x => x.Visit(visit1));
  8.  
  9.         list.ForEach(x => x.Visit(visit2));
  10.     }
  11.  
  12.     public interface House
  13.     {
  14.         void Visit(Visitor visit);
  15.     }
  16.  
  17.     public class IntsHouse : House
  18.     {
  19.         public void Visit(Visitor visit)
  20.         {
  21.             visit.Visit(10);
  22.         }
  23.     }
  24.  
  25.  
  26.     public class StringsHouse : House
  27.     {
  28.         public void Visit(Visitor visit)
  29.         {
  30.             visit.Visit("hello");
  31.         }
  32.     }
  33.  
  34.     public abstract class Visitor
  35.     {
  36.         public abstract void Visit(int someInt);
  37.  
  38.         public abstract void Visit(string someString);
  39.     }
  40.  
  41.  
  42.     public class DoublerVisitor : Visitor
  43.     {
  44.         public override void Visit(int someInt)
  45.         {
  46.             Debug.Log(someInt * 2);
  47.         }
  48.  
  49.         public override void Visit(string someString)
  50.         {
  51.             Debug.Log(someString + someString);
  52.         }
  53.     }
  54.  
  55.     public class VisitorVisitor : Visitor
  56.     {
  57.         public override void Visit(int someInt)
  58.         {
  59.             new DoublerVisitor().Visit(someInt);
  60.             Debug.Log(someInt);
  61.         }
  62.  
  63.         public override void Visit(string someString)
  64.         {
  65.             new DoublerVisitor().Visit(someString);
  66.             Debug.Log(someString);
  67.         }
  68.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement