diff --git a/design-patterns/java/factory/EmailNotification.java b/design-patterns/java/factory/notification/EmailNotification.java similarity index 100% rename from design-patterns/java/factory/EmailNotification.java rename to design-patterns/java/factory/notification/EmailNotification.java diff --git a/design-patterns/java/factory/EmailNotificationCreator.java b/design-patterns/java/factory/notification/EmailNotificationCreator.java similarity index 100% rename from design-patterns/java/factory/EmailNotificationCreator.java rename to design-patterns/java/factory/notification/EmailNotificationCreator.java diff --git a/design-patterns/java/factory/FactoryMethodDemo.java b/design-patterns/java/factory/notification/FactoryMethodDemo.java similarity index 100% rename from design-patterns/java/factory/FactoryMethodDemo.java rename to design-patterns/java/factory/notification/FactoryMethodDemo.java diff --git a/design-patterns/java/factory/Notification.java b/design-patterns/java/factory/notification/Notification.java similarity index 100% rename from design-patterns/java/factory/Notification.java rename to design-patterns/java/factory/notification/Notification.java diff --git a/design-patterns/java/factory/NotificationCreator.java b/design-patterns/java/factory/notification/NotificationCreator.java similarity index 100% rename from design-patterns/java/factory/NotificationCreator.java rename to design-patterns/java/factory/notification/NotificationCreator.java diff --git a/design-patterns/java/factory/NotificationServiceNaive.java b/design-patterns/java/factory/notification/NotificationServiceNaive.java similarity index 100% rename from design-patterns/java/factory/NotificationServiceNaive.java rename to design-patterns/java/factory/notification/NotificationServiceNaive.java diff --git a/design-patterns/java/factory/PushNotification.java b/design-patterns/java/factory/notification/PushNotification.java similarity index 100% rename from design-patterns/java/factory/PushNotification.java rename to design-patterns/java/factory/notification/PushNotification.java diff --git a/design-patterns/java/factory/PushNotificationCreator.java b/design-patterns/java/factory/notification/PushNotificationCreator.java similarity index 100% rename from design-patterns/java/factory/PushNotificationCreator.java rename to design-patterns/java/factory/notification/PushNotificationCreator.java diff --git a/design-patterns/java/factory/SMSNotification.java b/design-patterns/java/factory/notification/SMSNotification.java similarity index 100% rename from design-patterns/java/factory/SMSNotification.java rename to design-patterns/java/factory/notification/SMSNotification.java diff --git a/design-patterns/java/factory/SMSNotificationCreator.java b/design-patterns/java/factory/notification/SMSNotificationCreator.java similarity index 100% rename from design-patterns/java/factory/SMSNotificationCreator.java rename to design-patterns/java/factory/notification/SMSNotificationCreator.java diff --git a/design-patterns/java/factory/SimpleNotificationFactory.java b/design-patterns/java/factory/notification/SimpleNotificationFactory.java similarity index 100% rename from design-patterns/java/factory/SimpleNotificationFactory.java rename to design-patterns/java/factory/notification/SimpleNotificationFactory.java diff --git a/design-patterns/java/factory/subscription/Application.java b/design-patterns/java/factory/subscription/Application.java deleted file mode 100644 index 3dd61ec5..00000000 --- a/design-patterns/java/factory/subscription/Application.java +++ /dev/null @@ -1,17 +0,0 @@ -public class Application { - static public DataBase dataBase; - - public static void main(String[] arg) { - dataBase = new DataBase(); - Customer customer1 = new Customer("1"); - Customer customer2 = new Customer("2"); - Customer customer3 = new Customer("3"); - - customer1.SubscribePlan(new Gold(dataBase)); - customer2.SubscribePlan(new Platinum(dataBase)); - customer1.updateSubcribePlan(new RoyalGold(dataBase)); - customer2.unSubscribePlan(); - - - } -} diff --git a/design-patterns/java/factory/subscription/FactoryApplication.java b/design-patterns/java/factory/subscription/FactoryApplication.java new file mode 100644 index 00000000..89217dee --- /dev/null +++ b/design-patterns/java/factory/subscription/FactoryApplication.java @@ -0,0 +1,20 @@ +public class FactoryApplication { + static public DataBase dataBase; + + public static void main(String[] arg) { + dataBase = new DataBase(); + SubscriptionFactory factory = new SubscriptionFactory(dataBase); + Customer customer1 = new Customer("1"); + Customer customer2 = new Customer("2"); + Customer customer3 = new Customer("3"); + + + customer1.SubscribePlan(factory.getSubscription("gold")); + customer2.SubscribePlan(factory.getSubscription("silver")); + customer1.updateSubcribePlan(factory.getSubscription("royalGold")); + customer2.unSubscribePlan(); + customer3.SubscribePlan(factory.getSubscription("platinum")); + + + } +} diff --git a/design-patterns/java/factory/subscription/SubscriptionFactory.java b/design-patterns/java/factory/subscription/SubscriptionFactory.java new file mode 100644 index 00000000..bc28f2e9 --- /dev/null +++ b/design-patterns/java/factory/subscription/SubscriptionFactory.java @@ -0,0 +1,18 @@ +public class SubscriptionFactory { + private final DataBase dataBase; + + public SubscriptionFactory(DataBase dataBase){ + this.dataBase = dataBase; + } + public Subscription getSubscription(String subscriptionType){ + + return switch (subscriptionType) { + case "gold" -> new Gold(dataBase); + case "silver" -> new Silver(dataBase); + case "platinum" -> new Platinum(dataBase); + case "royalGold" -> new RoyalGold(dataBase); + default -> throw new IllegalArgumentException("Unknown subcription type"); + }; + + } +}