Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void Smth()
- {
- var list = new List<House>() { new IntsHouse(), new StringsHouse() };
- var visit1 = new DoublerVisitor();
- var visit2 = new VisitorVisitor();
- list.ForEach(x => x.Visit(visit1));
- list.ForEach(x => x.Visit(visit2));
- }
- public interface House
- {
- void Visit(Visitor visit);
- }
- public class IntsHouse : House
- {
- public void Visit(Visitor visit)
- {
- visit.Visit(10);
- }
- }
- public class StringsHouse : House
- {
- public void Visit(Visitor visit)
- {
- visit.Visit("hello");
- }
- }
- public abstract class Visitor
- {
- public abstract void Visit(int someInt);
- public abstract void Visit(string someString);
- }
- public class DoublerVisitor : Visitor
- {
- public override void Visit(int someInt)
- {
- Debug.Log(someInt * 2);
- }
- public override void Visit(string someString)
- {
- Debug.Log(someString + someString);
- }
- }
- public class VisitorVisitor : Visitor
- {
- public override void Visit(int someInt)
- {
- new DoublerVisitor().Visit(someInt);
- Debug.Log(someInt);
- }
- public override void Visit(string someString)
- {
- new DoublerVisitor().Visit(someString);
- Debug.Log(someString);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement