static void Main(string[] args) { var shapes = new GeometricShape[] { new Rectangle(10, 5), new Triangle(4, 6, 30), new Circle(4) }; var drawVisitor = new DrawVisitor(0, 0); var areaVisitor = new GetAreaVisitor(); var parameterVisitor = new GetPerimeterVisitor(); foreach (var shape in shapes) { Console.WriteLine(shape.Name); shape.Accept(drawVisitor); Console.WriteLine($"Points = {string.Join(", ", drawVisitor.Points[shape])}"); shape.Accept(areaVisitor); Console.WriteLine($"Area = {areaVisitor.Areas[shape]}"); shape.Accept(parameterVisitor); Console.WriteLine($"Parameter = {parameterVisitor.Parameters[shape]}"); Console.WriteLine(); } ; }
static void Main(string[] args) { var figures = new List <Figure> { new Circle(10), new Square(20), new Triangle(3, 4, 5) }; var areaVisitor = new AreaVisitor(); var colorVisitor = new ColorizeVisitor(); var drawVisitor = new DrawVisitor(); foreach (var figure in figures) { figure.AcceptColorizeVisitor(Color.Blue, colorVisitor); figure.AcceptDrawVisitor(0, 0, drawVisitor); figure.AcceptGetAreaVisitor(areaVisitor); } //Output: //Drawing Circle on position 0, 0 //Circle's area: 314,159265358979 //Drawing Square on position 0, 0 //Square's area: 400 //Drawing Triangle on position 0, 0 //Triangle's area: 6 }