简单工厂模式

本文介绍了一种使用C#语言开发的图表库设计方案,通过抽象图表接口和具体图表类(如柱状图、饼状图、折线图),以及一个图表工厂类来实现灵活且易于扩展的图表库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件公司欲基于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();
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值