Информация об изменениях

Сообщение Re[6]: Вопрос по подходу к реализации паттерна стратегия c# от 06.12.2019 14:21

Изменено 06.12.2019 14:22 Carc

Re[6]: Вопрос по подходу к реализации паттерна стратегия c#
Здравствуйте, Vladek, Вы писали:



S>>А если акция распространяется не на товар, а на подмножество товаров? За веревку и мыло туалетная бумага в подарок Разумно предположить, что вызывая метод Sell у веревки, мыла и бумаги по отдельности, условия акции мы не сможем проверить. Да и какой из товаров должен будет знать о наличии акции на все 3?


V>Значит надо моделировать корзину товаров, которая умеет выбирать нужную акцию в зависимости от сочетания товаров. Абстракция должна быть адекватной, а не универсальной.

samius Вам дело говорит… Ни к чему здесь всё тащить в товар! Тут явно есть третья сущность, как уже писал выше.
Ну не может товар знать на складе он, или уже как списанка на помойку — ибо ему это не нужно. Опять же как себя продать — товар не должен знать, не его ответственность — у него только набор характеристик: чего, сколько, вес в храммах, толщина, ширина, срок годности ну и цена само собой.

Условно назовем ее "сделка" (дабы не спорить "продажа" или "покупка").

Вот к ней, к третьей сущности, и применимы все другие параметры.

Например:
1) Была скидка или нет.
2) Товар с доставкой или нет.
3) "Сделка" (продажа) отменена или нет (товар не доставлен, клиент отказался и.т.д.)

А пихать все в "товар" это просто нарушение абстракции.
Товар не может знать как себя продать, потому как сам себя товар не продает.

Товар вообще всего лишь сущность описывающая сам товар: что это? Диван? Лицензионный ключик для софта? Жратва из Яндекс-Кушать?
Т.е. набор атрибутов, в том числе и цена.

А все остальное уже разруливает эта самая третья сущность — "сделка"

Наример
1) Есть ли скидка (проверяет где-то там в объекте "магазин".
2) Можно ли вообще продать? (к примеру, есть ли на складе).
3) Статус сделки. Например: "товар доставлен", "нет на складе", "в обработке" и.т.д.

Иначе действительно вермишель получается — все в одну кучу.
А эта самая "сделка" по сути своей композит — всё увязывает в единое целое. Дергая другие объекты ("склад" есть ли вообще), "акции" (давать ли скидку), способ оплаты (принимаем монгольские тугры, или берем только мешками репчатого лука)…
Re[6]: Вопрос по подходу к реализации паттерна стратегия c#
Здравствуйте, Vladek, Вы писали:



S>>А если акция распространяется не на товар, а на подмножество товаров? За веревку и мыло туалетная бумага в подарок Разумно предположить, что вызывая метод Sell у веревки, мыла и бумаги по отдельности, условия акции мы не сможем проверить. Да и какой из товаров должен будет знать о наличии акции на все 3?


V>Значит надо моделировать корзину товаров, которая умеет выбирать нужную акцию в зависимости от сочетания товаров. Абстракция должна быть адекватной, а не универсальной.

samius Вам дело говорит… Ни к чему здесь всё тащить в товар! Тут явно есть третья сущность, как уже писал выше.
Ну не может товар знать на складе он, или уже как списанка на помойке лежит — ибо ему это не нужно. Опять же как себя продать — товар не должен знать, не его ответственность — у него только набор характеристик: чего, сколько, вес в храммах, толщина, ширина, срок годности ну и цена само собой.

Третья сущность (объект, интерфейс)
Условно назовем ее "сделка" (дабы не спорить "продажа" или "покупка").

Вот к ней, к третьей сущности, и применимы все другие параметры.

Например:
1) Была скидка или нет.
2) Товар с доставкой или нет.
3) "Сделка" (продажа) отменена или нет (товар не доставлен, клиент отказался и.т.д.)

А пихать все в "товар" это просто нарушение абстракции.
Товар не может знать как себя продать, потому как сам себя товар не продает.

Товар вообще всего лишь сущность описывающая сам товар: что это? Диван? Лицензионный ключик для софта? Жратва из Яндекс-Кушать?
Т.е. набор атрибутов, в том числе и цена.

А все остальное уже разруливает эта самая третья сущность — "сделка"

Наример
1) Есть ли скидка (проверяет где-то там в объекте "магазин".
2) Можно ли вообще продать? (к примеру, есть ли на складе).
3) Статус сделки. Например: "товар доставлен", "нет на складе", "в обработке" и.т.д.

Иначе действительно вермишель получается — все в одну кучу.
А эта самая "сделка" по сути своей композит — всё увязывает в единое целое. Дергая другие объекты ("склад" есть ли вообще), "акции" (давать ли скидку), способ оплаты (принимаем монгольские тугры, или берем только мешками репчатого лука)…