Best Practices建议将新方法设置为受保护,并使用static new ...方法来减轻方法重载的不足。
所以我用这个模式解释如下here静态新建和继承
但是静态方法不会被继承。 所以我们必须为每个子类定义静态构造和静态新...方法。
因此,我们失去了一些继承的好处。
我对系统类来看看,希望能找到一个更好的解决办法,但我所看到的并没有真正帮助我:
- 一些关于静态的新模式,并宣布在子类中的方法
- 有的只是用实例新的不保护它
- 一些使用母类为“类工厂”,像SalesFormLetter
static SalesFormLetter construct(DocumentStatus document,
boolean getParmId = true)
{
switch(document)
{
case DocumentStatus::Confirmation : return new SalesFormLetter_Confirm (getParmId);
case DocumentStatus::PickingList : return SalesFormLetter_PickingList::construct(getParmId);
case DocumentStatus::PackingSlip : return new SalesFormLetter_PackingSlip (getParmId);
case DocumentStatus::ProjectPackingSlip : return new SalesFormLetter_PackingSlipProject(getParmId);
case DocumentStatus::Invoice : return new SalesFormLetter_Invoice (getParmId);
case DocumentStatus::ProjectInvoice : return new SalesFormLetter_InvoiceProject (getParmId);
default : throw error(strfmt("@SYS19306",funcname()));
}
throw error(strfmt("@SYS19306",funcname()));
}
所以我想知道是否有更好的解决办法,如果没有什么是名列前茅这些?
感谢您的回答。 我想我需要一些时间才能完全理解并付诸实践。 – Pierre 2012-07-12 13:27:02