我希望得到一些关于人们对以下班级建设技术的看法的反馈。 如果我处于可以选择使用以下任何一种情况的情况:
[删除了blogspam]
答案 0 :(得分:1)
尽可能(并且适当),创建处于可用状态的对象实例。 (所以第1号)
答案 1 :(得分:0)
我同意米奇的观点,但有时还会有更多。
工厂方法可以使您的代码更清晰,更易于使用和维护。在某些方面,他们不仅仅是美化的建设者,但他们确实给你额外的灵活性。
示例:
// Typlical constructor
public Page(pageId, title, url, keywords, content, tags, lastModified, lastModifiedBy)
{
// All values are set via the constructor.
//...
}
工厂方法:
public static Page PageByID(pageId)
{
// All properties are set internally here
//(directly or delegated as appropriate).
//...
}
public static Page NewPage(title, url)
{
// All properties not passed in are given
// appropriate default values.
//...
}
public static Page Page404()
{
// All properties are given
// appropriate default values.
//...
}
答案 2 :(得分:0)
正如Mitch所说,通常你会通过构造函数创建一个对象,它至少会使它处于稳定状态。您可以稍后使用公共属性来设置对象的非关键属性。
然而,有时你真的没有选择。框架可能需要默认构造函数(不带参数)。在这种情况下,您需要以另一种方式使对象处于稳定状态。使用公共属性是可能的,但是很容易忘记某些东西。在这些情况下,我建议创建一个在创建对象后直接调用的Initialize(或类似)方法。然后,此方法可能需要您填写稳定状态所需的所有参数,这样您就不会忘记任何事情。不同之处在于,除非您保留在每个公共成员中签入的内部“isInitialized”状态,否则您无法强制调用此方法。
编辑:啊刚刚看到关于工厂的帖子。是的,当然,如果框架需要默认构造函数,您也可以返回工厂并调用方法。