/// <summary>
        /// Main function for returning ConsoleShape. Returns concrete class.
        /// </summary>
        /// <param name="shapeType">The type of shape to create, expects ConsoleShapeEnum</param>
        /// <param name="shapeSize">the size of the shape to create</param>
        public override IConsoleShape GetConsoleShape(ConsoleShapeEnum shapeType, int shapeSize)
        {
            switch (shapeType)
            {
            case ConsoleShapeEnum.ChistmasTreeShape:
                return(new ChristmasTreeShape(shapeSize));

            case ConsoleShapeEnum.XShape:
                return(new XShape(shapeSize));

            default:
                throw new ApplicationException($"Invalid ConsoleShapeInput {shapeType}");
            }
        }
 /// <summary>
 /// Main function for returning ConsoleShape
 /// </summary>
 /// <param name="shapeType">The type of shape to create, expects ConsoleShapeEnum</param>
 /// <param name="shapeSize">the size of the shape to create</param>
 /// <returns>The new ConsoleShape. Call ConsoleShape.GetShape() to output pattern. </returns>
 public abstract IConsoleShape GetConsoleShape(ConsoleShapeEnum shapeType, int shapeSize);