加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 很多构造函数参数 – 有更好的方法吗?

发布时间:2020-12-15 08:16:40 所属栏目:百科 来源:网络整理
导读:public class HourlyForecastData{ public DateTime DateTime { get; private set; } public decimal TemperatureCelcius { get; private set; } public decimal DewPoint { get; private set; } public string Condition { get; private set; } public int
public class HourlyForecastData
{
    public DateTime DateTime { get; private set; }
    public decimal TemperatureCelcius { get; private set; }
    public decimal DewPoint { get; private set; }
    public string Condition { get; private set; }
    public int ConditionCode { get; private set; }
    public int WindSpeed { get; private set; }
    public string WindDirection { get; private set; }
    public decimal WindDegrees { get; private set; }
    public int UltravioletIndex { get; private set; }
    public decimal Humidity { get; private set; }
    public decimal WindChill { get; private set; }
    public int HeatIndex { get; private set; }
    public decimal FeelsLike { get; private set; }
    public decimal Snow { get; private set; }

    public HourlyForecastData(DateTime dateTime,decimal temperatureCelcius,...)
    {
        DateTime = dateTime;
        TemperatureCelcius = temperatureCelcius;
        //...set all the other properties via constructor
    }
}

我正在努力学习更好的软件设计和OOP.我正在创建一个可以访问回复XML的气象服务的库.服务提供了许多不同的字段,因此我为每个XML字段创建了属性.但是,通过构造函数设置该数量的属性会感觉有点混乱.我可以省略构造函数并拥有公共setter但我正在尝试创建一个不可变类.

我已经环顾了不同的设计模式,似乎有一些“Builder”和“Factory”模式.但是,我很难理解如何将其应用到我的代码中.或者我应该使用完全不同的东西来填充这些对象中的属性?

解决方法

在这种情况下,组合可能是一个很好的选择.特别是因为有些参数属于特定类别.

例如:

public int WindSpeed;
public string WindDirection;
public decimal WindDegrees;

为它们创建一个新对象,然后访问不同的值:

weatherData.Wind.Speed;

并将新的wind对象传递给构造函数:

var wind = new Wind(xmlData.WindSpeed,xmlData.WindDirection,xmldata.WindDegrees);
var weatherReport = new WeatherReport(wind,/* .... */);

我还会介绍几个枚举.因为到目前为止,weatherReport的用户例如必须知道字符串WindDirection可以具有哪些值.如果将字符串转换为枚举,则使用不同的值会更容易.

最后要注意的是,我通常只使用构造函数,如果实际上必须为类指定一些有效状态的值.例如,在您的情况下,最小有效状态是日期和温度?然后将它们放在构造函数中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读