Друзья, снова может быть ерундой занимаюсь, но все же прошу оценить. Суть паттерна в том, чтобы использовать один единственный метод для инициализации, остальные методы initFrom*() сделать private. С точки зрения пользователя кода это позволит сделать код немного чище и сосредоточиться на задаче не выискивая нужный метод в выпадающем списке. Сами делаем только на кастомных таблицах, используем весьма успешно.
X++:
public void initFrom(Common _common)
{
switch (_common.TableId)
{
case tableNum(SalesLine):
this.initFromSalesLine(_common);
break;
case tableNum(SalesTable):
this.initFromSalesTable(_common);
break;
case tableNum(InventTable):
this.initFromInventTable(_common);
break;
case tableNum(EcoResProduct):
this.initFromEcoResProduct(_common);
break;
case tableNum(WMSBillOfLading):
this.initFromWMSBillOfLading(_common);
break;
default:
throw error(Error::wrongUseOfFunction(funcName()));
}
}