繁体   English   中英

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

[英]OOP creating and copying an object that depends on one value

很抱歉,但我不知道该怎么称呼(如果您的标题更好,请在评论中告诉我)。

假设您有以下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的值List<IObject> dataList更改。

然后,您可以执行以下两项操作之一:

  1. 创建10个不同的ChartHelper Objects
  2. 使用相同的Object并更改dataList

这当然是在开发时如何提出问题的示例(我多次遇到此问题)

我的问题是,有没有一种可以帮助您解决此问题的设计模式? 还是有针对这些情况的最佳实践方法? 对我来说,学习这些方法很重要,因为我希望提高自己的技能。

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

但是,如果CreateSeries的实现根据数据类型而有所不同,则可以选择使用Strategy模式。 在这种情况下,您将在界面后面提取系列的创建,并提供不同类型系列的实现。 然后,您还可以拥有一个工厂,该工厂根据数据选择正确的策略并组成图表(帮助程序)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM