From dabb65bc2fa910c557ea83ffec6ced00194800a0 Mon Sep 17 00:00:00 2001 From: Michal Date: Wed, 20 May 2026 21:31:54 +0200 Subject: [PATCH] first solution --- .../java/core/basesyntax/DiscountStrategy.java | 18 ++++++++++++++++++ .../basesyntax/strategy/DiscountService.java | 6 ++++++ .../strategy/impl/BirthdayDiscountService.java | 11 +++++++++++ .../impl/BlackFridayDiscountService.java | 11 +++++++++++ .../strategy/impl/DefaultDiscountService.java | 11 +++++++++++ .../strategy/impl/NewYearDiscountService.java | 11 +++++++++++ 6 files changed, 68 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..bb108622 --- /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 "Black Friday" -> new BlackFridayDiscountService(); + case "New Year" -> new NewYearDiscountService(); + 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..9d44c7ae --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/DiscountService.java @@ -0,0 +1,6 @@ +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..f7f7c522 --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/BirthdayDiscountService.java @@ -0,0 +1,11 @@ +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..d600323c --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/BlackFridayDiscountService.java @@ -0,0 +1,11 @@ +package core.basesyntax.strategy.impl; + +import core.basesyntax.strategy.DiscountService; + +public class BlackFridayDiscountService implements DiscountService { + + @Override + public double getDiscount() { + return 45d; + } +} 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..9df9a7b4 --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/DefaultDiscountService.java @@ -0,0 +1,11 @@ +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..65ab0b4c --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/NewYearDiscountService.java @@ -0,0 +1,11 @@ +package core.basesyntax.strategy.impl; + +import core.basesyntax.strategy.DiscountService; + +public class NewYearDiscountService implements DiscountService { + + @Override + public double getDiscount() { + return 20; + } +}