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# – 很多构造函数参数 – 有更好的方法吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)