From 7a0300a3f6a57c8a32e38b69c70a2026596f3def Mon Sep 17 00:00:00 2001 From: RodionPlakhotniuk Date: Tue, 14 Apr 2026 18:23:35 +0200 Subject: [PATCH 1/2] feat: implement discount system --- src/main/java/core/basesyntax/DiscountService.java | 5 +++++ src/main/java/core/basesyntax/DiscountStrategy.java | 4 ++++ src/main/java/core/basesyntax/HelloWorld.java | 8 -------- .../basesyntax/strategy/impl/BirthdayDiscountService.java | 4 ++++ .../strategy/impl/BlackFridayDiscountService.java | 4 ++++ .../basesyntax/strategy/impl/DefaultDiscountService.java | 4 ++++ .../basesyntax/strategy/impl/NewYearDiscountService.java | 4 ++++ 7 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 src/main/java/core/basesyntax/DiscountService.java create mode 100644 src/main/java/core/basesyntax/DiscountStrategy.java delete mode 100644 src/main/java/core/basesyntax/HelloWorld.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/DiscountService.java b/src/main/java/core/basesyntax/DiscountService.java new file mode 100644 index 00000000..492e1b37 --- /dev/null +++ b/src/main/java/core/basesyntax/DiscountService.java @@ -0,0 +1,5 @@ +package core.basesyntax.strategy; + +public interface DiscountService { + double getDiscount(); +} diff --git a/src/main/java/core/basesyntax/DiscountStrategy.java b/src/main/java/core/basesyntax/DiscountStrategy.java new file mode 100644 index 00000000..4f8608ec --- /dev/null +++ b/src/main/java/core/basesyntax/DiscountStrategy.java @@ -0,0 +1,4 @@ +package core.basesyntax; + +public class DiscountStrategy { +} diff --git a/src/main/java/core/basesyntax/HelloWorld.java b/src/main/java/core/basesyntax/HelloWorld.java deleted file mode 100644 index 97db782b..00000000 --- a/src/main/java/core/basesyntax/HelloWorld.java +++ /dev/null @@ -1,8 +0,0 @@ -package core.basesyntax; - -/** - * Feel free to remove this class and create your own. - */ -public class HelloWorld { - -} 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..41751f05 --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/BirthdayDiscountService.java @@ -0,0 +1,4 @@ +package core.basesyntax.strategy.impl; + +public class BirthdayDiscountService { +} 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..122951d2 --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/BlackFridayDiscountService.java @@ -0,0 +1,4 @@ +package core.basesyntax.strategy.impl; + +public class BlackFridayDiscountService { +} 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..b0c6f4e0 --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/DefaultDiscountService.java @@ -0,0 +1,4 @@ +package core.basesyntax.strategy.impl; + +public class DefaultDiscountService { +} 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..c037bd88 --- /dev/null +++ b/src/main/java/core/basesyntax/strategy/impl/NewYearDiscountService.java @@ -0,0 +1,4 @@ +package core.basesyntax.strategy.impl; + +public class NewYearDiscountService { +} From bcdb01433cc02c2934cfb444f51f9ddec0198a64 Mon Sep 17 00:00:00 2001 From: RodionPlakhotniuk Date: Tue, 14 Apr 2026 18:24:02 +0200 Subject: [PATCH 2/2] feat: add discount system --- .../java/core/basesyntax/DiscountService.java | 2 +- .../java/core/basesyntax/DiscountStrategy.java | 17 +++++++++++++++++ .../strategy/impl/BirthdayDiscountService.java | 8 +++++++- .../impl/BlackFridayDiscountService.java | 8 +++++++- .../strategy/impl/DefaultDiscountService.java | 8 +++++++- .../strategy/impl/NewYearDiscountService.java | 8 +++++++- src/test/java/core/basesyntax/StrategyTest.java | 3 +-- 7 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/main/java/core/basesyntax/DiscountService.java b/src/main/java/core/basesyntax/DiscountService.java index 492e1b37..73282ff7 100644 --- a/src/main/java/core/basesyntax/DiscountService.java +++ b/src/main/java/core/basesyntax/DiscountService.java @@ -1,4 +1,4 @@ -package core.basesyntax.strategy; +package core.basesyntax; public interface DiscountService { double getDiscount(); diff --git a/src/main/java/core/basesyntax/DiscountStrategy.java b/src/main/java/core/basesyntax/DiscountStrategy.java index 4f8608ec..fb421138 100644 --- a/src/main/java/core/basesyntax/DiscountStrategy.java +++ b/src/main/java/core/basesyntax/DiscountStrategy.java @@ -1,4 +1,21 @@ package core.basesyntax; +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) { + switch (specialEvent) { + case "New Year": + return new NewYearDiscountService(); + case "Birthday": + return new BirthdayDiscountService(); + case "Black Friday": + return new BlackFridayDiscountService(); + default: + return new DefaultDiscountService(); + } + } } diff --git a/src/main/java/core/basesyntax/strategy/impl/BirthdayDiscountService.java b/src/main/java/core/basesyntax/strategy/impl/BirthdayDiscountService.java index 41751f05..80aae93d 100644 --- a/src/main/java/core/basesyntax/strategy/impl/BirthdayDiscountService.java +++ b/src/main/java/core/basesyntax/strategy/impl/BirthdayDiscountService.java @@ -1,4 +1,10 @@ package core.basesyntax.strategy.impl; -public class BirthdayDiscountService { +import core.basesyntax.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 index 122951d2..50c36ca4 100644 --- a/src/main/java/core/basesyntax/strategy/impl/BlackFridayDiscountService.java +++ b/src/main/java/core/basesyntax/strategy/impl/BlackFridayDiscountService.java @@ -1,4 +1,10 @@ package core.basesyntax.strategy.impl; -public class BlackFridayDiscountService { +import core.basesyntax.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 index b0c6f4e0..054e7e0f 100644 --- a/src/main/java/core/basesyntax/strategy/impl/DefaultDiscountService.java +++ b/src/main/java/core/basesyntax/strategy/impl/DefaultDiscountService.java @@ -1,4 +1,10 @@ package core.basesyntax.strategy.impl; -public class DefaultDiscountService { +import core.basesyntax.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 index c037bd88..5594a722 100644 --- a/src/main/java/core/basesyntax/strategy/impl/NewYearDiscountService.java +++ b/src/main/java/core/basesyntax/strategy/impl/NewYearDiscountService.java @@ -1,4 +1,10 @@ package core.basesyntax.strategy.impl; -public class NewYearDiscountService { +import core.basesyntax.DiscountService; + +public class NewYearDiscountService implements DiscountService { + @Override + public double getDiscount() { + return 20; + } } diff --git a/src/test/java/core/basesyntax/StrategyTest.java b/src/test/java/core/basesyntax/StrategyTest.java index f66af794..250345ca 100644 --- a/src/test/java/core/basesyntax/StrategyTest.java +++ b/src/test/java/core/basesyntax/StrategyTest.java @@ -1,6 +1,5 @@ package core.basesyntax; -import core.basesyntax.strategy.DiscountService; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Map; @@ -36,7 +35,7 @@ public void getDiscountBySpecialEvent_IsOk() { @Test public void interfaceDiscountService_IsCreated() { try { - Class discountServiceInterface = Class.forName("core.basesyntax.strategy.DiscountService"); + Class discountServiceInterface = Class.forName("core.basesyntax.DiscountService"); Assert.assertTrue("DiscountService must be an interface\n", discountServiceInterface.isInterface()); checkHasMethodGetDiscount(discountServiceInterface); } catch (ClassNotFoundException e) {