关于实现工厂类型类的建议

本文关键字:类型 工厂 于实现 实现 | 更新日期: 2023-09-27 18:14:48

我有两个几乎完全相同的类。它们都能产生视觉图表,实际上是相同的视觉图表。一个为窗口制作图表,一个为网络制作图表。在ChartFactoryA使用的类中,实际上只有一个区别

using System.Windows.Forms.DataVisualization.Charting;

ChartFactoryB使用

using System.Web.UI.DataVisualization.Charting;

基本上,这两个图表采用相同的数据和构造,然后返回最终的图表。我想在两个类中创建一个类,这样我就可以将它移动到我的共享库。

这是类

的公共和私有接口
public class ChartFactory
{
    private const int MAX_POINTS_DISPLAYED = 5;
    private const int MAX_POINTS_TRACKED = 6;
    public static Chart CreateChart(UserCourse userCourse)
    private static Chart InitilizeChart()
    private static Chart CreateEmptyChart()
    private static ChartArea CreateEmptyChartArea()
    private static void SetUpAxisY(ChartArea chartArea)
    private static void SetUpAxisX(ChartArea chartArea)
    private static Series CreateEmptyDataSeries()
    private static void AttachStripLineToChart(ChartArea chartArea)
    private static void PopulateChartWithData(Chart chart, UserCourse userCourse)
    private static ChartPoint[] InitilizeChartPoints(SessionsReadOnly sessions, int pointCount)
    private static void PopulateChartPointsWithSessions(SessionsReadOnly sessions, int pointCount, ChartPoint[] chartPoints)
    private static void DisplayChartPointsInReverse(Chart chart, ChartPoint[] chartPoints)

}

关于实现工厂类型类的建议

使用#define

样本(从Json拷贝)网项目)

using System;
using System.Collections.Generic;
#if !SILVERLIGHT && !PocketPC && !NET20
using System.ComponentModel.DataAnnotations;
using System.Configuration;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Web.Script.Serialization;
#endif
using System.Text;
using NUnit.Framework;
using Newtonsoft.Json;
using System.IO;
using System.Collections;
using System.Xml;
using System.Xml.Serialization;
using System.Collections.ObjectModel;
using Newtonsoft.Json.Linq;
using System.Linq;
using Newtonsoft.Json.Converters;
#if !PocketPC && !NET20 && !WINDOWS_PHONE
using System.Runtime.Serialization.Json;
#endif
using Newtonsoft.Json.Tests.TestObjects;
using System.Runtime.Serialization;
using System.Globalization;
using Newtonsoft.Json.Utilities;
using System.Reflection;
#if !NET20 && !SILVERLIGHT
using System.Xml.Linq;
using System.Text.RegularExpressions;
using System.Collections.Specialized;
using System.Linq.Expressions;
#endif
#if !(NET35 || NET20 || WINDOWS_PHONE)
using System.Dynamic;
using System.ComponentModel;
#endif