OOP创建和复制依赖于一个值的对象

时间:2014-04-15 13:42:08

标签: oop design-patterns

我很抱歉,但我不知道该怎么称呼这个帖子(如果你有更好的头衔,请在评论中告诉我)。

比如说你有以下Object,其目的是创建Constructor中指定数据的图表系列:

/**
 * Helper to generate chart series 
 */
public class ChartHelper
{
    public System.Windows.Forms.DataVisualization.Charting.Chart ChartType { get; set; }
    public String TimeType { get; set; }
    private readonly List<IObject> _datalist;
    private readonly TimeType _timeType;
    private readonly DateTime _stopDate;
    private readonly DateTime _startDate;

    public ChartHelper(List<IObject> dataList, TimeType timeType, DateTime startDate, DateTime stopDate)
    {
        _startDate = startDate;
         _stopDate = stopDate;
        _datalist = dataList;
        _timeType = timeType;
    }


    public System.Windows.Forms.DataVisualization.Charting.Chart GetChart()
    {
        CreateSeries(_startDate);
        return ChartType;
    }

    private void CreateSeries(DateTime seriesTime)
    {
      //Do something
    }

   //More internal private methods

}

现在假设您有一个程序可以创建10个不同的Charts但只有List<IObject> dataList更改的值。

然后你可以做两件事之一:

  1. 创建10个不同的ChartHelper Objects
  2. 使用相同的Object并更改dataList
  3. 这当然是一个例子,说明在开发过程中如何呈现问题(我已多次遇到此问题)

    我的问题是,有没有一种设计模式可以帮助您解决这个问题?或者是否有一种对这些情况有用的最佳实践方法?我希望提高自己的技能,这对我来说很重要。

1 个答案:

答案 0 :(得分:1)

如果只有数据不同,那么我建议使用同一个类并从中创建10个不同的对象。

但是,如果CreateSeries的实现因数据类型而异,那么这将是Strategy模式的候选者。在这种情况下,您将在界面后面提取系列的创建,并为不同类型的系列提供实现。然后,您还可以根据数据选择正确的策略并组成图表(帮助程序)。