Java Factory Pattern

Sort by

recency

|

153 Discussions

|

  • + 0 comments

    interface Food { public String getType(); } class Pizza implements Food { public String getType() { return "Someone ordered a Fast Food!"; } }

    class Cake implements Food {
    
     public String getType() {
     return "Someone ordered a Dessert!";
     }
    }
    class FoodFactory {
        public Food getFood(String order) {
          if(order.equals("cake")){
            return new Cake();
          } 
          else if(order.equals("pizza")){
            return new Pizza();
          }
        return null;
    

    //Write your code here

    }//End of getFood method

    }//End of factory class
    
    public class Solution {
    
     public static void main(String args[]){
            Do_Not_Terminate.forbidExit();
    
        try{
    
            Scanner sc=new Scanner(System.in);
            //creating the factory
            FoodFactory foodFactory = new FoodFactory();
    
            //factory instantiates an object
            Food food = foodFactory.getFood(sc.nextLine());
    
    
            System.out.println("The factory returned "+food.getClass());
            System.out.println(food.getType());
        }
        catch (Do_Not_Terminate.ExitTrappedException e) {
            System.out.println("Unsuccessful Termination!!");
        }
     }
    
    }
    class Do_Not_Terminate {
    
        public static class ExitTrappedException extends SecurityException {
    
            private static final long serialVersionUID = 1L;
        }
    
        public static void forbidExit() {
            final SecurityManager securityManager = new SecurityManager() {
                @Override
                public void checkPermission(Permission permission) {
                    if (permission.getName().contains("exitVM")) {
                        throw new ExitTrappedException();
                    }
                }
            };
            System.setSecurityManager(securityManager);
        }
    }   
    
  • + 0 comments

    //Java 15

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
     enum TypeFoodEnum {
        PIZZA("Pizza", "Fast Food"),
        CAKE("Cake", "Dessert");
    
        private String name;
        private String ordered;
    
         TypeFoodEnum(String name, String ordered) {
            this.name = name;
            this.ordered = ordered;
         }
    
         public static String getName(TypeFoodEnum typeFoodEnum){
             return typeFoodEnum.name;
         }
    
         public static String getOrdered(TypeFoodEnum typeFoodEnum){
             return typeFoodEnum.ordered;
         }
     }
    
    interface Food {
        String getFoodType();
        String getOrdered();
    }
    
    class Pizza implements Food {
        @Override
        public String getFoodType() {
            return TypeFoodEnum.getName(TypeFoodEnum.PIZZA);
        }
        @Override
        public String getOrdered() {
            return TypeFoodEnum.getOrdered(TypeFoodEnum.PIZZA);
        }
    
    
    }
    class Cake implements Food {
        @Override
        public String getFoodType() {
            return TypeFoodEnum.getName(TypeFoodEnum.CAKE);
        }
        @Override
        public String getOrdered() {
            return TypeFoodEnum.getOrdered(TypeFoodEnum.CAKE);
        }
    }
    class FoodFactory  {
        public Food getFood(String type) {
            if(TypeFoodEnum.getName(TypeFoodEnum.PIZZA).equalsIgnoreCase(type)) {
                return new Pizza();
            } else if(TypeFoodEnum.getName(TypeFoodEnum.CAKE).equalsIgnoreCase(type)) {
                return new Cake();
            } else {
                return null;
            }
        }
    }
    
    public class Solution {
        private static String STRING_FACTORY_ORDER = "The factory returned class %s";
        private static String STRING_SOMEONE_ORDER = "Someone ordered a %s!";
    
        public static void main(String[] args) {
            FoodFactory foodFactory = new FoodFactory();
    
            try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
                String typeFodd = br.readLine().trim();
                Food food = foodFactory.getFood(typeFodd);
                System.out.println(String.format(STRING_FACTORY_ORDER, food.getFoodType()));
                System.out.println(String.format(STRING_SOMEONE_ORDER, food.getOrdered()));
            } catch (IOException e) {
                System.out.println(e);
            }
        }
    
    }
    
  • + 0 comments

    my Code :

    import java.io.; import java.util.;

    interface Food {

    public String getType();
    

    }

    class Cake implements Food{ public String getType(){

        return"The factory returned class Cake\nSomeone ordered a Dessert!";
    }
    

    }

    class Pizza implements Food{ public String getType(){

        return"The factory returned class Pizza\nSomeone ordered a Fast Food!";
    }
    

    }

    public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
    
        Scanner s = new Scanner(System.in);
        String str =s.next();
        if(str.compareTo("cake") ==0){
            Food obj = new Cake();
        System.out.println(obj.getType());
    
        }
      if(str.compareTo("pizza") ==0){
          Food obj = new Pizza();
            System.out.println(obj.getType());
    
        }
    
    
    
    }
    

    }

  • + 0 comments

    return order.equals("cake") ? new Cake() : new Pizza();

  • + 0 comments

    Why on earth teach such bad habits on such a basic question. Where is the use of constants or enum?