Рекомендации по реализации классов Factory Type - PullRequest
2 голосов
/ 14 ноября 2011

У меня есть два класса, которые почти полностью идентичны. Они оба создают визуальные диаграммы, фактически одну и ту же визуальную диаграмму. Один создает диаграмму для окна, другой создает диаграмму для Интернета. На самом деле есть только одно различие в классах 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)

}

1 Ответ

0 голосов
/ 14 ноября 2011

Использовать # определить

Образец (скопировано из Json.Net проекта)

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
...