From 3129ab9fd958634f62d81d1b00503d9a38668de4 Mon Sep 17 00:00:00 2001 From: barmal4 Date: Tue, 12 Oct 2021 20:13:18 +0200 Subject: [PATCH] Add whole transaction logic --- ...rg_apache_commons_commons_lang3_3_12_0.xml | 13 +++ pom.xml | 5 + .../java/apo/project/InputToCashEnum.java | 37 ++++++++ src/main/java/apo/project/Machine.java | 91 ++++++++++++++++--- src/main/java/apo/project/Main.java | 16 +++- src/main/java/apo/project/PinPad.java | 2 +- src/main/java/apo/project/Shelf.java | 16 +++- .../apo/project/TransactionProcessor.java | 51 +++++++++++ .../apo/project/{ => order}/OrderService.java | 2 +- .../apo/project/order/OrderServiceImpl.java | 10 ++ .../project/payment/CardPaymentService.java | 20 ++++ .../apo/project/payment/CardTerminal.java | 9 ++ .../apo/project/payment/ChangeDispatcher.java | 12 +++ src/main/java/apo/project/payment/Coin.java | 31 +++++++ .../java/apo/project/payment/CoinHolder.java | 8 -- .../project/payment/CoinPaymentCollector.java | 9 ++ src/main/java/apo/project/payment/Money.java | 12 +++ .../java/apo/project/payment/MoneyHolder.java | 32 +++++++ .../project/payment/MoneyPaymentService.java | 14 +++ .../java/apo/project/payment/PaperMoney.java | 30 ++++++ .../project/payment/PaperMoneyCollector.java | 9 ++ .../apo/project/payment/PaymentCollector.java | 2 +- .../apo/project/payment/PaymentService.java | 2 + .../apo/project/products/AbstractProduct.java | 5 +- .../apo/project/products/PrepareProduct.java | 29 ++++++ .../apo/project/products/ProductImpl.java | 2 +- .../factory/PrepareProductsFactory.java | 12 +++ untitled104.iml | 1 + 28 files changed, 447 insertions(+), 35 deletions(-) create mode 100644 .idea/libraries/Maven__org_apache_commons_commons_lang3_3_12_0.xml create mode 100644 src/main/java/apo/project/InputToCashEnum.java create mode 100644 src/main/java/apo/project/TransactionProcessor.java rename src/main/java/apo/project/{ => order}/OrderService.java (83%) create mode 100644 src/main/java/apo/project/order/OrderServiceImpl.java create mode 100644 src/main/java/apo/project/payment/CardPaymentService.java create mode 100644 src/main/java/apo/project/payment/CardTerminal.java create mode 100644 src/main/java/apo/project/payment/ChangeDispatcher.java create mode 100644 src/main/java/apo/project/payment/Coin.java delete mode 100644 src/main/java/apo/project/payment/CoinHolder.java create mode 100644 src/main/java/apo/project/payment/CoinPaymentCollector.java create mode 100644 src/main/java/apo/project/payment/Money.java create mode 100644 src/main/java/apo/project/payment/MoneyHolder.java create mode 100644 src/main/java/apo/project/payment/MoneyPaymentService.java create mode 100644 src/main/java/apo/project/payment/PaperMoney.java create mode 100644 src/main/java/apo/project/payment/PaperMoneyCollector.java create mode 100644 src/main/java/apo/project/products/PrepareProduct.java create mode 100644 src/main/java/apo/project/products/factory/PrepareProductsFactory.java diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_12_0.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_12_0.xml new file mode 100644 index 0000000..28b8682 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_12_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 2a03125..8aca292 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,11 @@ lombok 1.18.22 + + org.apache.commons + commons-lang3 + 3.12.0 + \ No newline at end of file diff --git a/src/main/java/apo/project/InputToCashEnum.java b/src/main/java/apo/project/InputToCashEnum.java new file mode 100644 index 0000000..913d015 --- /dev/null +++ b/src/main/java/apo/project/InputToCashEnum.java @@ -0,0 +1,37 @@ +package apo.project; + +public enum InputToCashEnum { + + ONE(1,20), + TWO(2, 10), + THREE(3, 5), + FOUR(4, 2), + FIVE(5, 1), + SIX(6, 0.5), + SEVEN(7, 0.2), + EIGHT(8, 0.1); + private int no; + private double value; + + private InputToCashEnum(int aNo, double aValue) { + no = aNo; + value = aValue; + } + + public double getValue() { + return value; + } + + public int getNo() { + return no; + } + + public static InputToCashEnum fromNo(int aNo) { + for (InputToCashEnum cashEnum : InputToCashEnum.values()) { + if (cashEnum.no == aNo) { + return cashEnum; + } + } + throw new IllegalArgumentException(); + } +} diff --git a/src/main/java/apo/project/Machine.java b/src/main/java/apo/project/Machine.java index 7a5dafb..3020835 100644 --- a/src/main/java/apo/project/Machine.java +++ b/src/main/java/apo/project/Machine.java @@ -1,81 +1,144 @@ package apo.project; +import apo.project.order.OrderService; +import apo.project.order.OrderServiceImpl; +import apo.project.payment.*; import apo.project.products.AbstractProduct; import apo.project.products.factory.AbstractProductsFactory; +import apo.project.products.factory.PrepareProductsFactory; import apo.project.products.factory.TestProductsFactory; +import org.apache.commons.lang3.Range; + import java.util.ArrayList; import java.util.List; +import java.util.Optional; +import java.util.Scanner; public class Machine { private List< Shelf< AbstractProduct > > productsInMachine; + private PinPad pinPad; + private CardTerminal cardTerminal; + private TransactionProcessor transactionProcessor; public Machine() { + cardTerminal = new CardTerminal(); + pinPad = new PinPad(); productsInMachine = new ArrayList<>(); initMachine(); } public void showShelfs() { - productsInMachine.forEach( shelf -> System.out.println(shelf.toString()) ); + productsInMachine.forEach( shelf -> System.out.println( shelf.toString() ) ); + } + + public void getShelfNumber() { + int opt = pinPad.getNumber(); + Shelf< AbstractProduct > pickedShelf = productsInMachine.stream().filter( shelf -> shelf.getShelfNumber() == opt ).findFirst().orElseThrow(); + Optional< AbstractProduct > product = pickedShelf.getProduct(); + if( product.isPresent() ) { + System.out.println( "Wybrano " + product.get().toString() ); + transactionProcessor = new TransactionProcessor( product.get(), pickedShelf ); + } } private void initMachine() { - List products = new ArrayList<>(); + List< AbstractProduct > products = new ArrayList<>(); TestProductsFactory factory = new TestProductsFactory(); - for(int i = 0; i < 5; i++) { + PrepareProductsFactory productsFactory = new PrepareProductsFactory(); + for( int i = 0; i < 5; i++ ) { products.add( factory.create( AbstractProductsFactory.COLA ) ); } productsInMachine.add( new Shelf<>( 1, products ) ); products.clear(); - for(int i = 0; i < 5; i++) { + for( int i = 0; i < 5; i++ ) { products.add( factory.create( AbstractProductsFactory.PEPSI ) ); } productsInMachine.add( new Shelf<>( 2, products ) ); products.clear(); - for(int i = 0; i < 5; i++) { + for( int i = 0; i < 5; i++ ) { products.add( factory.create( AbstractProductsFactory.FANTA ) ); } productsInMachine.add( new Shelf<>( 3, products ) ); products.clear(); - for(int i = 0; i < 5; i++) { + for( int i = 0; i < 5; i++ ) { products.add( factory.create( AbstractProductsFactory.TWIX ) ); } productsInMachine.add( new Shelf<>( 4, products ) ); products.clear(); - for(int i = 0; i < 5; i++) { + for( int i = 0; i < 5; i++ ) { products.add( factory.create( AbstractProductsFactory.KITKAT ) ); } productsInMachine.add( new Shelf<>( 5, products ) ); products.clear(); - for(int i = 0; i < 5; i++) { + for( int i = 0; i < 5; i++ ) { products.add( factory.create( AbstractProductsFactory._3BIT ) ); } productsInMachine.add( new Shelf<>( 6, products ) ); products.clear(); - for(int i = 0; i < 5; i++) { - products.add( factory.create( AbstractProductsFactory.KEBAB ) ); + for( int i = 0; i < 5; i++ ) { + products.add( productsFactory.create( AbstractProductsFactory.KEBAB ) ); } productsInMachine.add( new Shelf<>( 7, products ) ); products.clear(); - for(int i = 0; i < 5; i++) { - products.add( factory.create( AbstractProductsFactory.FRYTKI ) ); + for( int i = 0; i < 5; i++ ) { + products.add( productsFactory.create( AbstractProductsFactory.FRYTKI ) ); } productsInMachine.add( new Shelf<>( 8, products ) ); products.clear(); - for(int i = 0; i < 5; i++) { - products.add( factory.create( AbstractProductsFactory.PIZZA ) ); + for( int i = 0; i < 5; i++ ) { + products.add( productsFactory.create( AbstractProductsFactory.PIZZA ) ); } productsInMachine.add( new Shelf<>( 9, products ) ); products.clear(); } + public void startTransactionProcess() { + Scanner sc = new Scanner( System.in ); + int opt = sc.nextInt(); + if( opt == 9 ) { + // Card card = cardTerminal.getCard(); + // originally putting card object with all + // data needed to process real payment + transactionProcessor.processTransaction( new CardPaymentService( 0 ) ); + return; + } + collectMoney( opt, sc ); + } + + private void collectMoney( int aOpt, Scanner aSc ) { + double payment = 0; + double productPrice = transactionProcessor.getProduct().getPrice(); + Range< Integer > moneyRange = Range.between( 3, 8 ); + Range< Integer > paperMoneyRange = Range.between( 1, 2 ); + while( payment < productPrice ) { + if( moneyRange.contains( aOpt ) ) { + Coin coin = new Coin( InputToCashEnum.fromNo( aOpt ).getValue() ); + transactionProcessor.collect( coin ); + payment += coin.getValue(); + } else if( paperMoneyRange.contains( aOpt ) ) { + PaperMoney paperMoney = new PaperMoney( InputToCashEnum.fromNo( aOpt ).getValue() ); + transactionProcessor.collect( paperMoney ); + payment += paperMoney.getValue(); + } else { + throw new IllegalArgumentException(); + } + double toPay = productPrice - payment; + if( toPay < 0 ) { + break; + } + System.out.println( "Pozostało do zapłaty: " + toPay + " zł" ); + aOpt = aSc.nextInt(); + } + transactionProcessor.processTransaction( new MoneyPaymentService() ); + } } diff --git a/src/main/java/apo/project/Main.java b/src/main/java/apo/project/Main.java index ab327d4..11604a2 100644 --- a/src/main/java/apo/project/Main.java +++ b/src/main/java/apo/project/Main.java @@ -4,13 +4,23 @@ public class Main { public static void main(String[] args) { Machine machine = new Machine(); - PinPad pinPad = new PinPad(); machine.showShelfs(); - System.out.println("Wybierz produkt (numer półki)"); + System.out.println("Wybierz produkt (numer półki): "); - int opt = pinPad.getNumber(); + machine.getShelfNumber(); + + System.out.println("Wybierz metode płatności. " + + "Użyj karty lub zacznij wrzucać " + + "pieniądze"); + + System.out.println("Możliwe wartości do użycia: " + + "1: 20 zł, 2: 10 zł, 3: 5 zł, 4: 2 zł, 5:" + + " 1 zł, 6: 50 gr, 7: 20 gr, 8: 10 gr. 9: " + + "Karta"); + + machine.startTransactionProcess(); } } diff --git a/src/main/java/apo/project/PinPad.java b/src/main/java/apo/project/PinPad.java index 5e717e6..0e14d1e 100644 --- a/src/main/java/apo/project/PinPad.java +++ b/src/main/java/apo/project/PinPad.java @@ -2,7 +2,7 @@ package apo.project; import java.util.Scanner; -public class PinPad { +class PinPad { private final static Scanner sc = new Scanner(System.in); public int getNumber() { diff --git a/src/main/java/apo/project/Shelf.java b/src/main/java/apo/project/Shelf.java index d852a3d..9d78586 100644 --- a/src/main/java/apo/project/Shelf.java +++ b/src/main/java/apo/project/Shelf.java @@ -1,26 +1,32 @@ package apo.project; import apo.project.products.AbstractProduct; -import lombok.AccessLevel; import lombok.Getter; import java.util.ArrayList; -import java.util.Collection; import java.util.List; +import java.util.Optional; @Getter -public class Shelf extends ArrayList { +class Shelf< T extends AbstractProduct > extends ArrayList< T > { private final int shelfNumber; - public Shelf( int aShelfNumber, List aProducts ) { + public Shelf( int aShelfNumber, List< T > aProducts ) { shelfNumber = aShelfNumber; addAll( aProducts ); } + public Optional getProduct() { + if( isHaveProducts() ) { + return Optional.ofNullable( get( 0 ) ); + } + return Optional.empty(); + } + @Override public String toString() { - if(isHaveProducts()) { + if( isHaveProducts() ) { return shelfNumber + "| " + get( 0 ).toString(); } return "EMPTY"; diff --git a/src/main/java/apo/project/TransactionProcessor.java b/src/main/java/apo/project/TransactionProcessor.java new file mode 100644 index 0000000..fa48ee0 --- /dev/null +++ b/src/main/java/apo/project/TransactionProcessor.java @@ -0,0 +1,51 @@ +package apo.project; + +import apo.project.order.OrderService; +import apo.project.order.OrderServiceImpl; +import apo.project.payment.*; +import apo.project.products.AbstractProduct; +import lombok.Getter; + +@Getter +class TransactionProcessor { + + private final AbstractProduct product; + private final PaperMoneyCollector paperCollector; + private final CoinPaymentCollector coinCollector; + private final ChangeDispatcher changeDispatcher; + private final Shelf shelf; + private final OrderService orderService; + + TransactionProcessor( AbstractProduct aProduct, + Shelf aShelf ) { + product = aProduct; + shelf = aShelf; + paperCollector = new PaperMoneyCollector(); + coinCollector = new CoinPaymentCollector(); + changeDispatcher = new ChangeDispatcher(); + orderService = new OrderServiceImpl(); + } + + public void processTransaction( PaymentService aPaymentService ) { + aPaymentService.charge( product.getPrice() ); + getCustomerProduct(); + if( !aPaymentService.isMobileService() ) { + changeDispatcher.dispatchChange(); + } + if(shelf.isHaveProducts()) { + orderService.order( product, 0 ); + } + } + + private void getCustomerProduct() { + shelf.remove( 0 ); + product.prepareProduct(); + } + + public void collect( Money aMoney ) { + if( aMoney.isCoin() ) { + coinCollector.collect( aMoney ); + } + paperCollector.collect( aMoney ); + } +} diff --git a/src/main/java/apo/project/OrderService.java b/src/main/java/apo/project/order/OrderService.java similarity index 83% rename from src/main/java/apo/project/OrderService.java rename to src/main/java/apo/project/order/OrderService.java index 4bac219..2c0343b 100644 --- a/src/main/java/apo/project/OrderService.java +++ b/src/main/java/apo/project/order/OrderService.java @@ -1,4 +1,4 @@ -package apo.project; +package apo.project.order; import apo.project.products.AbstractProduct; diff --git a/src/main/java/apo/project/order/OrderServiceImpl.java b/src/main/java/apo/project/order/OrderServiceImpl.java new file mode 100644 index 0000000..9781f45 --- /dev/null +++ b/src/main/java/apo/project/order/OrderServiceImpl.java @@ -0,0 +1,10 @@ +package apo.project.order; + +import apo.project.products.AbstractProduct; + +public class OrderServiceImpl implements OrderService{ + @Override + public void order( AbstractProduct aProduct, int aQuantity ) { + System.out.println("Ordering product: " + aProduct.toString() + " Quantity: " + aQuantity ); + } +} diff --git a/src/main/java/apo/project/payment/CardPaymentService.java b/src/main/java/apo/project/payment/CardPaymentService.java new file mode 100644 index 0000000..421db4c --- /dev/null +++ b/src/main/java/apo/project/payment/CardPaymentService.java @@ -0,0 +1,20 @@ +package apo.project.payment; + +public class CardPaymentService implements PaymentService { + + private final long cardNumber; + + public CardPaymentService(long aCardNumber) { + cardNumber = aCardNumber; + } + + @Override + public void charge( double aValue ) { + System.out.println("Payment from Card Service: " + aValue + " to pay. Card number: " + cardNumber); + } + + @Override + public boolean isMobileService() { + return true; + } +} diff --git a/src/main/java/apo/project/payment/CardTerminal.java b/src/main/java/apo/project/payment/CardTerminal.java new file mode 100644 index 0000000..5ead197 --- /dev/null +++ b/src/main/java/apo/project/payment/CardTerminal.java @@ -0,0 +1,9 @@ +package apo.project.payment; + +public class CardTerminal { + +/* public Card getCard() { + // getting card number from termnial + return cardObject; + }*/ +} diff --git a/src/main/java/apo/project/payment/ChangeDispatcher.java b/src/main/java/apo/project/payment/ChangeDispatcher.java new file mode 100644 index 0000000..972b8fd --- /dev/null +++ b/src/main/java/apo/project/payment/ChangeDispatcher.java @@ -0,0 +1,12 @@ +package apo.project.payment; + +import java.util.Collections; +import java.util.List; + +public class ChangeDispatcher { + + public List dispatchChange() { + System.out.println("Oddaje reszte"); + return Collections.emptyList(); + } +} diff --git a/src/main/java/apo/project/payment/Coin.java b/src/main/java/apo/project/payment/Coin.java new file mode 100644 index 0000000..d425f08 --- /dev/null +++ b/src/main/java/apo/project/payment/Coin.java @@ -0,0 +1,31 @@ +package apo.project.payment; + +public class Coin implements Money { + + private final double value; + + public Coin(double aValue) { + value = aValue; + } + + @Override + public boolean isValid() { + System.out.println("Checking validation of coin"); + return true; + } + + @Override + public double getValue() { + return value; + } + + @Override + public boolean isCoin() { + return true; + } + + @Override + public boolean isPaperMoney() { + return false; + } +} diff --git a/src/main/java/apo/project/payment/CoinHolder.java b/src/main/java/apo/project/payment/CoinHolder.java deleted file mode 100644 index 0a9d199..0000000 --- a/src/main/java/apo/project/payment/CoinHolder.java +++ /dev/null @@ -1,8 +0,0 @@ -package apo.project.payment; - -public abstract class CoinHolder { - - private double coinsCollected; - - -} diff --git a/src/main/java/apo/project/payment/CoinPaymentCollector.java b/src/main/java/apo/project/payment/CoinPaymentCollector.java new file mode 100644 index 0000000..3b98cc9 --- /dev/null +++ b/src/main/java/apo/project/payment/CoinPaymentCollector.java @@ -0,0 +1,9 @@ +package apo.project.payment; + +public class CoinPaymentCollector implements PaymentCollector { + + @Override + public void collect( Money aValue ) { + MoneyHolder.collect( aValue ); + } +} diff --git a/src/main/java/apo/project/payment/Money.java b/src/main/java/apo/project/payment/Money.java new file mode 100644 index 0000000..f24b946 --- /dev/null +++ b/src/main/java/apo/project/payment/Money.java @@ -0,0 +1,12 @@ +package apo.project.payment; + +public interface Money { + + boolean isValid(); + + double getValue(); + + boolean isCoin(); + + boolean isPaperMoney(); +} diff --git a/src/main/java/apo/project/payment/MoneyHolder.java b/src/main/java/apo/project/payment/MoneyHolder.java new file mode 100644 index 0000000..df515a5 --- /dev/null +++ b/src/main/java/apo/project/payment/MoneyHolder.java @@ -0,0 +1,32 @@ +package apo.project.payment; + +import lombok.Getter; + +import java.util.Comparator; +import java.util.List; + + +class MoneyHolder { + + @Getter + private static List coinsCollected; + @Getter + private static List paperMoneyCollected; + @Getter + private static double collectedForTransaction = 0; + + protected static void collect(Money aMoney) { + if(aMoney.isCoin()) { + collectedForTransaction += aMoney.getValue(); + coinsCollected.add( aMoney ); + coinsCollected.sort( Comparator.comparing( Money::getValue ) ); + return; + } + collectedForTransaction += aMoney.getValue(); + paperMoneyCollected.add( aMoney ); + paperMoneyCollected.sort( Comparator.comparing( Money::getValue ) ); + } + protected static void flushTransaction() { + //deleting info about transaction data + } +} diff --git a/src/main/java/apo/project/payment/MoneyPaymentService.java b/src/main/java/apo/project/payment/MoneyPaymentService.java new file mode 100644 index 0000000..a459a53 --- /dev/null +++ b/src/main/java/apo/project/payment/MoneyPaymentService.java @@ -0,0 +1,14 @@ +package apo.project.payment; + +public class MoneyPaymentService implements PaymentService { + @Override + public void charge( double aValue ) { + System.out.println("Money Payment Service " + + "charged: " + aValue); + } + + @Override + public boolean isMobileService() { + return false; + } +} diff --git a/src/main/java/apo/project/payment/PaperMoney.java b/src/main/java/apo/project/payment/PaperMoney.java new file mode 100644 index 0000000..36dd4fd --- /dev/null +++ b/src/main/java/apo/project/payment/PaperMoney.java @@ -0,0 +1,30 @@ +package apo.project.payment; + +public class PaperMoney implements Money{ + + private final double value; + + public PaperMoney(double aValue) { + value = aValue; + } + + @Override + public boolean isValid() { + return false; + } + + @Override + public double getValue() { + return value; + } + + @Override + public boolean isCoin() { + return false; + } + + @Override + public boolean isPaperMoney() { + return true; + } +} diff --git a/src/main/java/apo/project/payment/PaperMoneyCollector.java b/src/main/java/apo/project/payment/PaperMoneyCollector.java new file mode 100644 index 0000000..b9259fc --- /dev/null +++ b/src/main/java/apo/project/payment/PaperMoneyCollector.java @@ -0,0 +1,9 @@ +package apo.project.payment; + +public class PaperMoneyCollector implements PaymentCollector { + + @Override + public void collect( Money aValue ) { + MoneyHolder.collect( aValue ); + } +} diff --git a/src/main/java/apo/project/payment/PaymentCollector.java b/src/main/java/apo/project/payment/PaymentCollector.java index 16133e5..b445329 100644 --- a/src/main/java/apo/project/payment/PaymentCollector.java +++ b/src/main/java/apo/project/payment/PaymentCollector.java @@ -2,5 +2,5 @@ package apo.project.payment; public interface PaymentCollector { - void collect(double aValue); + void collect(Money aValue); } diff --git a/src/main/java/apo/project/payment/PaymentService.java b/src/main/java/apo/project/payment/PaymentService.java index caadfd0..89417dd 100644 --- a/src/main/java/apo/project/payment/PaymentService.java +++ b/src/main/java/apo/project/payment/PaymentService.java @@ -3,4 +3,6 @@ package apo.project.payment; public interface PaymentService { void charge(double aValue); + + boolean isMobileService(); } diff --git a/src/main/java/apo/project/products/AbstractProduct.java b/src/main/java/apo/project/products/AbstractProduct.java index 8bee73f..6594133 100644 --- a/src/main/java/apo/project/products/AbstractProduct.java +++ b/src/main/java/apo/project/products/AbstractProduct.java @@ -9,9 +9,12 @@ public abstract class AbstractProduct { protected double price; + public void prepareProduct() { + System.out.println("Wydaje produkt"); + } @Override public String toString() { - return name + ": " + price; + return name + ": " + price + " zł"; } } diff --git a/src/main/java/apo/project/products/PrepareProduct.java b/src/main/java/apo/project/products/PrepareProduct.java new file mode 100644 index 0000000..ba009af --- /dev/null +++ b/src/main/java/apo/project/products/PrepareProduct.java @@ -0,0 +1,29 @@ +package apo.project.products; + +public class PrepareProduct extends AbstractProduct { + + private AbstractProduct decorated; + public PrepareProduct(AbstractProduct aProduct) { + decorated = aProduct; + } + @Override + public void prepareProduct() { + System.out.println("Przygotowywanie produktu " + getName()); + decorated.prepareProduct(); + } + + @Override + public String getName() { + return decorated.getName(); + } + + @Override + public double getPrice() { + return decorated.getPrice(); + } + + @Override + public String toString() { + return decorated.toString(); + } +} diff --git a/src/main/java/apo/project/products/ProductImpl.java b/src/main/java/apo/project/products/ProductImpl.java index 732dec6..c6bc53d 100644 --- a/src/main/java/apo/project/products/ProductImpl.java +++ b/src/main/java/apo/project/products/ProductImpl.java @@ -1,6 +1,6 @@ package apo.project.products; -public class ProductImpl extends AbstractProduct{ +public class ProductImpl extends AbstractProduct { public ProductImpl(String aProductName, double aPrice) { name = aProductName; diff --git a/src/main/java/apo/project/products/factory/PrepareProductsFactory.java b/src/main/java/apo/project/products/factory/PrepareProductsFactory.java new file mode 100644 index 0000000..6238bce --- /dev/null +++ b/src/main/java/apo/project/products/factory/PrepareProductsFactory.java @@ -0,0 +1,12 @@ +package apo.project.products.factory; + +import apo.project.products.AbstractProduct; +import apo.project.products.PrepareProduct; +import apo.project.products.ProductImpl; + +public class PrepareProductsFactory extends AbstractProductsFactory{ + @Override + AbstractProduct createProduct( String aProductName, double aPrice ) { + return new PrepareProduct( new ProductImpl( aProductName, aPrice ) ); + } +} diff --git a/untitled104.iml b/untitled104.iml index 5b9686c..e388a0b 100644 --- a/untitled104.iml +++ b/untitled104.iml @@ -12,5 +12,6 @@ + \ No newline at end of file