Есть 2 сущности. Продукты(Product) и Страховые Компания(Insurer). В их связки образуется Договор. Договор нужно сначала Посчитать(Calculator), потом Сохранить(Save). Сохранение может быть как у Продукта, так и у Страховой Компании. Помогите спроектировать. На картинке нарисовал к чему я пришел, но думаю есть и куда лучше вариант реализации.
Смотря что проектировать надо... Если в терминах моделей, то все очевидно: 1. Класс Product с методом Save; 2. Класс Insurer с методом Save; 3. Класс Contract, содержащий поля Product и Insurer, а также методы Calculate и Save. Метод Save вызывает методы Save для своих Product и Insurer.
Сейчас в коде очень плоха, все лежит черти знает где. Вот и хочу это разложить по полочкам. Мне это и нужно спроектировать. Опишем по подробнее. Есть 3 продукта ( П1, П2, П3 ), и 2 Страховые компания( СК1, СК2 ). Если брать их по отдельности, они сущности и нечего из себя не представляют. Если взять связку П1 + CК1 то получим договор по П1 у СК1 или П1 + СК2. Связка может быть любая, главная чтоб были 2 сущности П и СК. Можно начать оформление договора с 1-й из сущности, но когда доходим до Расчета должна быть известна 2-ая сущность. Получается чтоб Рассчитать договор нужно связка П и СК, так же и с Сохранением. Сохранение происходит на нашей стороне, так и на стороне СК. Думал в таком направление, но как быть с калькулятором. Калькулятор не может быть только у П или СК( т.к. рассчитать их по отдельности не можем ). Калькулятор создается от связки П и СК.