Отображение шаблона декоратора в NHibernate

В дополнение к этому вопросу:

Композиция вместо наследования - куда делятся дополнительные свойства?

Принятый и аналогичные ответы дают хороший ответ. Но если пойти дальше, что, если отдел продаж и производственный отдел захотят записывать различную информацию об отсутствии по болезни и отпусках? Это могло быть одним из решений:

public class Holiday : Absence
{
    //Extra fields go here.
}

public class Sickness : Absence
{
    //Extra fields go here.
}

public class SalesHoliday : Holiday
{
    //Extra fields go here.
}

public class SalesSickness : Sickness
{
    //Extra fields go here.
}

public class ProductionHoliday : Sickness
{
    //Extra fields go here.
}

public class ProductionSickness : Sickness
{
    //Extra fields go here.
}

ясно, что это начало взрывного роста классов, который будет только ухудшаться, и поэтому его следует избегать.

Одним из возможных решений может быть использование шаблона декоратора (Банда четырех). Это было бы идеально, но в этом гипотетическом примере настойчивость проявляется в NHibernate. Я просмотрел повсюду пример того, как сопоставить шаблон декоратора в NHibernate, и ничего не нашел. В моих экспериментах, и в одном случае, использовались различные комбинации отображений подклассов, сопоставлений объединенного подкласса, сопоставлений объединения-подкласса, дискриминаторов, неявного полиморфизма и сопоставлений «многие ко всем», но пока без удовлетворительных результатов. Кто-нибудь взломал этот? Сущность Employee будет иметь набор отсутствий любого типа, поэтому полиморфное поведение является обязательным.

5
задан Community 23 May 2017 в 11:53
поделиться