From 043369c5aa0cbe30ff1c6a441aca069c08ac029d Mon Sep 17 00:00:00 2001 From: Nikollai Date: Wed, 8 Apr 2026 15:56:54 +0200 Subject: [PATCH 1/2] Created 3 files: - TransactionCalculatorFactory - PurchaseCalculatorFactory - SaleCalculatorFactory --- .../calculators/PurchaseCalculatorFactory.java | 18 ++++++++++++++++++ .../calculators/SaleCalculatorFactory.java | 16 ++++++++++++++++ .../TransactionCalculatorFactory.java | 8 ++++++++ 3 files changed, 42 insertions(+) create mode 100644 src/main/java/millions/calculators/PurchaseCalculatorFactory.java create mode 100644 src/main/java/millions/calculators/SaleCalculatorFactory.java create mode 100644 src/main/java/millions/calculators/TransactionCalculatorFactory.java diff --git a/src/main/java/millions/calculators/PurchaseCalculatorFactory.java b/src/main/java/millions/calculators/PurchaseCalculatorFactory.java new file mode 100644 index 0000000..7f496cf --- /dev/null +++ b/src/main/java/millions/calculators/PurchaseCalculatorFactory.java @@ -0,0 +1,18 @@ +package millions.calculators; + +import millions.Share; + +public class PurchaseCalculatorFactory extends TransactionCalculatorFactory { + Share share; + + @Override + public void setShare(Share share) { + this.share = share; + } + + @Override + public TransactionCalculator createCalculator() { + return new PurchaseCalculator(share); + } + +} diff --git a/src/main/java/millions/calculators/SaleCalculatorFactory.java b/src/main/java/millions/calculators/SaleCalculatorFactory.java new file mode 100644 index 0000000..fd16818 --- /dev/null +++ b/src/main/java/millions/calculators/SaleCalculatorFactory.java @@ -0,0 +1,16 @@ +package millions.calculators; + +import millions.Share; + +public class SaleCalculatorFactory extends TransactionCalculatorFactory { + Share share; + + @Override + public void setShare(Share share) { + this.share = share; + } + @Override + public TransactionCalculator createCalculator() { + return new SaleCalculator(share); + } +} diff --git a/src/main/java/millions/calculators/TransactionCalculatorFactory.java b/src/main/java/millions/calculators/TransactionCalculatorFactory.java new file mode 100644 index 0000000..106ca73 --- /dev/null +++ b/src/main/java/millions/calculators/TransactionCalculatorFactory.java @@ -0,0 +1,8 @@ +package millions.calculators; + +import millions.Share; + +public abstract class TransactionCalculatorFactory { + public abstract void setShare(Share share); + public abstract TransactionCalculator createCalculator(); +} From 77700e070715a9eede3ac31f60b83ad3b2d35755 Mon Sep 17 00:00:00 2001 From: Nikollai Date: Fri, 17 Apr 2026 14:10:24 +0200 Subject: [PATCH 2/2] Fixed TransactionCalculatorFactory to actually follow factory design pattern --- .../calculators/PurchaseCalculatorFactory.java | 18 ------------------ .../calculators/SaleCalculatorFactory.java | 16 ---------------- .../TransactionCalculatorFactory.java | 14 +++++++++++--- 3 files changed, 11 insertions(+), 37 deletions(-) delete mode 100644 src/main/java/millions/calculators/PurchaseCalculatorFactory.java delete mode 100644 src/main/java/millions/calculators/SaleCalculatorFactory.java diff --git a/src/main/java/millions/calculators/PurchaseCalculatorFactory.java b/src/main/java/millions/calculators/PurchaseCalculatorFactory.java deleted file mode 100644 index 7f496cf..0000000 --- a/src/main/java/millions/calculators/PurchaseCalculatorFactory.java +++ /dev/null @@ -1,18 +0,0 @@ -package millions.calculators; - -import millions.Share; - -public class PurchaseCalculatorFactory extends TransactionCalculatorFactory { - Share share; - - @Override - public void setShare(Share share) { - this.share = share; - } - - @Override - public TransactionCalculator createCalculator() { - return new PurchaseCalculator(share); - } - -} diff --git a/src/main/java/millions/calculators/SaleCalculatorFactory.java b/src/main/java/millions/calculators/SaleCalculatorFactory.java deleted file mode 100644 index fd16818..0000000 --- a/src/main/java/millions/calculators/SaleCalculatorFactory.java +++ /dev/null @@ -1,16 +0,0 @@ -package millions.calculators; - -import millions.Share; - -public class SaleCalculatorFactory extends TransactionCalculatorFactory { - Share share; - - @Override - public void setShare(Share share) { - this.share = share; - } - @Override - public TransactionCalculator createCalculator() { - return new SaleCalculator(share); - } -} diff --git a/src/main/java/millions/calculators/TransactionCalculatorFactory.java b/src/main/java/millions/calculators/TransactionCalculatorFactory.java index 106ca73..dd79b39 100644 --- a/src/main/java/millions/calculators/TransactionCalculatorFactory.java +++ b/src/main/java/millions/calculators/TransactionCalculatorFactory.java @@ -2,7 +2,15 @@ import millions.Share; -public abstract class TransactionCalculatorFactory { - public abstract void setShare(Share share); - public abstract TransactionCalculator createCalculator(); +public class TransactionCalculatorFactory { + + private TransactionCalculatorFactory() {} + + public TransactionCalculator createPurchaseCalculator(Share share) { + return new PurchaseCalculator(share); + } + + public TransactionCalculator createSaleCalculator(Share share) { + return new SaleCalculator(share); + } }