diff --git a/subjects/java/checkpoints/factory-blueprint/ExerciseRunner.java b/subjects/java/checkpoints/factory-blueprint/ExerciseRunner.java new file mode 100644 index 000000000..fab7e7957 --- /dev/null +++ b/subjects/java/checkpoints/factory-blueprint/ExerciseRunner.java @@ -0,0 +1,13 @@ +public class ExerciseRunner { + public static void main(String[] args) { + Factory factory = new Factory(); + + // Handle invalid product type + Object invalidProduct = factory.createProduct("C"); + if (invalidProduct != null) { + invalidProduct.showDetails(); + } else { + System.out.println("Invalid product type"); + } + } +} \ No newline at end of file diff --git a/subjects/java/checkpoints/factory-blueprint/README.md b/subjects/java/checkpoints/factory-blueprint/README.md new file mode 100644 index 000000000..ca8c0cd62 --- /dev/null +++ b/subjects/java/checkpoints/factory-blueprint/README.md @@ -0,0 +1,60 @@ +## Factory Blueprint + +### Instructions + +You are given an incomplete Factory design pattern implementation with some incorrect parts. Complete and fix the class to demonstrate your understanding of how the Factory design pattern works. + +### Expected Classes + +```java +// Product interface +public interface Product { + void showDetails(); +} + +// ConcreteProductA class +public class ConcreteProductA { + ... +} + +// ConcreteProductB class +public class ConcreteProductB { + ... +} + +// Factory class +public class Factory { + public ConcreteProductB createProduct(String type) { // the type parametre accept two values `A` and `B` + + } +} +``` + +### Usage + +Here is a possible `ExerciseRunner.java` to test your classes: + +```java +public class ExerciseRunner { + public static void main(String[] args) { + Factory factory = new Factory(); + + // Handle invalid product type + Object invalidProduct = factory.createProduct("C"); + if (invalidProduct != null) { + invalidProduct.showDetails(); + } else { + System.out.println("Invalid product type"); + } + } +} +``` + +### Expected Output + +```shell +$ javac *.java -d build +$ java -cp build ExerciseRunner +Invalid product type +$ +```