【发布时间】:2015-03-22 06:19:00
【问题描述】:
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 字段创建了属性。但是,通过构造函数设置这么多属性感觉有点混乱。我可以省略构造函数并拥有公共设置器,但我正在尝试创建一个不可变类。
我已经查看了不同的设计模式,似乎有一些“Builder”和“Factory”模式。但是,我很难理解如何将其应用于我的代码。或者我应该使用完全不同的东西来填充这些对象的属性?
【问题讨论】:
-
这些属性都需要吗?
-
所有属性都有默认值吗?
-
所有属性都是必需的。我认为没有任何类型的默认值,Web 服务文档对此没有提及。
-
不变性真的那么重要吗?看起来像一个简单的 DTO,所以我将属性公开,然后让 XMLSerializer 自动填充它。
-
试试“builder”模式。但它不会从根本上解决你的问题
标签: c# oop design-patterns