某软件公司欲基于C#语言开发一套图表库,该图表库可以为应用系统提供各种不同外观的图表,例如柱状图、饼状图、折线图等。软件公司图表库设计人员希望为应用系统开发人员提供一套灵活易用的图表库,而且可以较为方便地对图表库进行扩展,以便能够在将来增加一些新类型的图表。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Chart
{
/// <summary>
/// 抽象图表接口
/// </summary>
interface Chart
{
void Display();
}
// 柱状图类, 具体产品类
class HistogramChart : Chart
{
public HistogramChart()
{
Console.WriteLine("创建柱状图");
}
public void Display()
{
Console.WriteLine("显示柱状图");
}
}
/// <summary>
/// 饼状图, 具体产品类
/// </summary>
class PieChart : Chart
{
public PieChart()
{
Console.WriteLine("创建饼状图");
}
public void Display()
{
Console.WriteLine("显示饼状图");
}
}
/// <summary>
/// 折线图类, 具体产品类
/// </summary>
class LineChart : Chart
{
public LineChart()
{
Console.WriteLine("创建折线图");
}
public void Display()
{
Console.WriteLine("显示折线图");
}
}
/// <summary>
/// 图表工厂类: 工厂类
/// </summary>
class ChartFactory
{
public static Chart getChart(string type)
{
try
{
Chart chart = null;
if (type == "histogram")
{
chart = new HistogramChart();
Console.WriteLine("初始化柱状图");
}
else if (type == "pie")
{
chart = new PieChart();
Console.WriteLine("初始化设置饼状图");
}
else if (type == "line")
{
chart = new LineChart();
Console.WriteLine("初始化设置折线图");
}
return chart;
}
catch
{
Console.WriteLine("UnSupportedShapeException");
return null;
}
}
}
class Program
{
static void Main(string[] args)
{
Chart chart;
chart = ChartFactory.getChart("Line");
chart.Display();
}
}
}