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

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

概述public class HourlyForecastData{ public DateTime DateTime { get; private set; } public decimal TemperatureCelcius { get; private set; } public decimal DewPoint { get; private set; } p
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可以具有哪些值.如果将字符串转换为枚举,则使用不同的值会更容易.

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

总结

以上是内存溢出为你收集整理的c# – 很多构造函数参数 – 有更好的方法吗?全部内容,希望文章能够帮你解决c# – 很多构造函数参数 – 有更好的方法吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存