Example #1
0
        public override Shape Construct(ShapeFactory shapeFactory)
        {
            var rootShape = shapeFactory.CreateComposite();

            rootShape.Add(shapeFactory.CreateRectangle(10, 30, 5, 4));
            rootShape.Add(shapeFactory.CreateCircle(10, 3, 13));

            rootShape.Add(shapeFactory.CreateComposite(
                              shapeFactory.CreateRectangle(12, 14, 2, 2),
                              shapeFactory.CreateCircle(15, 18, 2)
                              ));

            return(rootShape);
        }
        public override Shape Construct(ShapeFactory shapeFactory)
        {
            string line = Console.ReadLine();

            var shape = shapeFactory.CreateComposite();

            while (line != string.Empty)
            {
                var parts = line.Split(' ');
                if (parts[0] == "circle")
                {
                    var x = double.Parse(parts[1]);
                    var y = double.Parse(parts[2]);
                    var r = double.Parse(parts[3]);

                    shape.Add(shapeFactory.CreateCircle(x, y, r));
                }
                else if (parts[0] == "rectangle")
                {
                    var x = double.Parse(parts[1]);
                    var y = double.Parse(parts[2]);
                    var w = double.Parse(parts[3]);
                    var h = double.Parse(parts[4]);

                    shape.Add(shapeFactory.CreateRectangle(x, y, w, h));
                }
                else if (parts[0] == "complex")
                {
                    shape.Add(this.Construct(shapeFactory));
                }

                line = Console.ReadLine();
            }

            return(shape);
        }