From 2d992efee3f7ea90ff958ec106ba794fbfa2b629 Mon Sep 17 00:00:00 2001 From: Oleh Makarytskyi Date: Tue, 12 May 2026 15:20:53 +0300 Subject: [PATCH] add discount strategy --- .../java/core/basesyntax/DiscountStrategy.java | 18 ++++++++++++++++++ .../basesyntax/strategy/DiscountService.java | 5 +++++ .../strategy/impl/BirthdayDiscountService.java | 10 ++++++++++ .../impl/BlackFridayDiscountService.java | 10 ++++++++++ .../strategy/impl/DefaultDiscountService.java | 10 ++++++++++ .../strategy/impl/NewYearDiscountService.java | 10 ++++++++++ 6 files changed, 63 insertions(+) create mode 100644 src/main/java/core/basesyntax/DiscountStrategy.java create mode 100644 src/main/java/core/basesyntax/strategy/DiscountService.java create mode 100644 src/main/java/core/basesyntax/strategy/impl/BirthdayDiscountService.java create mode 100644 src/main/java/core/basesyntax/strategy/impl/BlackFridayDiscountService.java create mode 100644 src/main/java/core/basesyntax/strategy/impl/DefaultDiscountService.java create mode 100644 src/main/java/core/basesyntax/strategy/impl/NewYearDiscountService.java diff --git a/src/main/java/core/basesyntax/DiscountStrategy.java b/src/main/java/core/basesyntax/DiscountStrategy.java new file mode 100644 index 00000000..e8db503c --- /dev/null +++ b/src/main/java/core/basesyntax/DiscountStrategy.java @@ -0,0 +1,18 @@ +package core.basesyntax; + +import core.basesyntax.strategy.DiscountService; +import core.basesyntax.strategy.impl.BirthdayDiscountService; +import core.basesyntax.strategy.impl.BlackFridayDiscountService; +import core.basesyntax.strategy.impl.DefaultDiscountService; +import core.basesyntax.strategy.impl.NewYearDiscountService; + +public class DiscountStrategy { + public DiscountService getDiscountServiceBySpecialEvent(String specialEvent) { + return switch (specialEvent) { + case "Birthday" -> new BirthdayDiscountService(); + case "New Year" -> new NewYearDiscountService(); + case "Black Friday" -> new BlackFridayDiscountService(); + default -> new DefaultDiscountService(); + }; + } +} diff --git a/src/main/java/core/basesyntax/strategy/DiscountService.java b/src/main/java/core/basesyntax/strategy/DiscountService.java new file mode 100644 index 00000000..492e1b37 --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/DiscountService.java @@ -0,0 +1,5 @@ +package core.basesyntax.strategy; + +public interface DiscountService { + double getDiscount(); +} diff --git a/src/main/java/core/basesyntax/strategy/impl/BirthdayDiscountService.java b/src/main/java/core/basesyntax/strategy/impl/BirthdayDiscountService.java new file mode 100644 index 00000000..63f78c45 --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/BirthdayDiscountService.java @@ -0,0 +1,10 @@ +package core.basesyntax.strategy.impl; + +import core.basesyntax.strategy.DiscountService; + +public class BirthdayDiscountService implements DiscountService { + @Override + public double getDiscount() { + return 33; + } +} diff --git a/src/main/java/core/basesyntax/strategy/impl/BlackFridayDiscountService.java b/src/main/java/core/basesyntax/strategy/impl/BlackFridayDiscountService.java new file mode 100644 index 00000000..aff8bb60 --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/BlackFridayDiscountService.java @@ -0,0 +1,10 @@ +package core.basesyntax.strategy.impl; + +import core.basesyntax.strategy.DiscountService; + +public class BlackFridayDiscountService implements DiscountService { + @Override + public double getDiscount() { + return 45; + } +} diff --git a/src/main/java/core/basesyntax/strategy/impl/DefaultDiscountService.java b/src/main/java/core/basesyntax/strategy/impl/DefaultDiscountService.java new file mode 100644 index 00000000..9c3b522d --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/DefaultDiscountService.java @@ -0,0 +1,10 @@ +package core.basesyntax.strategy.impl; + +import core.basesyntax.strategy.DiscountService; + +public class DefaultDiscountService implements DiscountService { + @Override + public double getDiscount() { + return 0; + } +} diff --git a/src/main/java/core/basesyntax/strategy/impl/NewYearDiscountService.java b/src/main/java/core/basesyntax/strategy/impl/NewYearDiscountService.java new file mode 100644 index 00000000..e799547b --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/NewYearDiscountService.java @@ -0,0 +1,10 @@ +package core.basesyntax.strategy.impl; + +import core.basesyntax.strategy.DiscountService; + +public class NewYearDiscountService implements DiscountService { + @Override + public double getDiscount() { + return 20; + } +}