Какой шаблон дизайна я должен использовать и почему?

В аптеке продаются лекарства разных производителей. Каждое лекарство имеет название, тип (антибиотики, противовоспалительное средство, желудок), цену и т. Д. Однако импортное лекарство должно иметь сертификат из лаборатории в текущей стране. Более того, если клиент покупает импортное лекарство, работник аптеки должен запросить базу данных лекарств и посмотреть данные о аналогичном лекарстве от отечественных производителей (которые обычно дешевле).

Как нам разработать структуру классов для обработки данных о лекарствах в этой аптеке?

1 ответ

Я нашел " Применение UML и паттернов " Крейга Лармана очень хорошей книгой, чтобы узнать о дизайне, паттернах и реализации.

Если вам нужно более быстрое решение, а не чтение всей книги, просто прототипируйте что-нибудь: создайте несколько классов, выясните, каким будет ваш интерфейс и т. Д. Попробуйте некоторые вещи, чтобы увидеть, что будет проще всего реализовать / поддерживать.

Возможность:
У тебя есть ProductService который имеет FindCounterpartMedicines(), Если описанный в вашем вопросе случай является единственным частным случаем, это может быть достигнуто с помощью простого if: Не усложняйте вещи, если в этом нет необходимости, а "Делайте самое простое, что может сработать" ( ссылка).

if (medicine.IsImported) {
    result.CounterPartMedicines = FindCounterpartMedicines(medicine);
}

Если у каждого лекарства есть особая логика, вы можете использовать полиморфизм, чтобы избежать списка

if (medicine.SomeProp) doSomePropLogic();
if (medicine.SomeOtherProp) doSomeOtherPropLogic();

Пример наследования

interface Medicine {
    BeforeBuyLogic();
}

class Antibiotics : Medicine {
    BeforeBuyLogic() {
        // check doctor subscription
    }
}

class StomachMed : Medicine {
    BeforeBuyLogic() {
        // check customer allergies
    }
}
Другие вопросы по тегам