Implement Another Implementation of Factory Design Pattern
parent
484f3afd9d
commit
5faafbeda2
@ -0,0 +1,55 @@
|
||||
package factory.coffee;
|
||||
|
||||
public abstract class Coffee {
|
||||
|
||||
private String name;
|
||||
private String milk;
|
||||
private String beans;
|
||||
|
||||
public void grindBeans(){ System.out.println("Grinding beans....");}
|
||||
|
||||
public void steamMilk(){ System.out.println("Steaming milk...."); }
|
||||
|
||||
public void serveCoffee(){
|
||||
System.out.println("Serving coffee....");
|
||||
}
|
||||
|
||||
public void pourShot(){
|
||||
System.out.println("Shot of coffee....");
|
||||
}
|
||||
|
||||
public void getCup(){
|
||||
System.out.println("Cup selected....");
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getMilk() {
|
||||
return milk;
|
||||
}
|
||||
|
||||
public void setMilk(String milk) {
|
||||
this.milk = milk;
|
||||
}
|
||||
|
||||
public String getBeans() {
|
||||
return beans;
|
||||
}
|
||||
|
||||
public void setBeans(String beans) { this.beans = beans; }
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Coffee{" +
|
||||
"name='" + name + '\'' +
|
||||
", milk='" + milk + '\'' +
|
||||
", beans='" + beans + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package factory.coffee;
|
||||
|
||||
public class CoffeeFactory {
|
||||
|
||||
public CoffeeFactory(){ }
|
||||
|
||||
public Coffee createCoffee(String item) {
|
||||
return switch (item) {
|
||||
case "cortado" -> new Cortado();
|
||||
case "latte" -> new Latte();
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package factory.coffee;
|
||||
|
||||
public class Cortado extends Coffee{
|
||||
|
||||
public Cortado() {
|
||||
setName("Cortado");
|
||||
setBeans("Columbian");
|
||||
setMilk("Semi Skimmed Milk");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void grindBeans() {
|
||||
System.out.println("Grinding Beans Extra fine....");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,18 @@
|
||||
package factory.coffee;
|
||||
|
||||
public class Latte extends Coffee{
|
||||
|
||||
public Latte() {
|
||||
setName("Latte");
|
||||
setBeans("Kopi luwak");
|
||||
setMilk("Almond Milk");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pourShot() {
|
||||
System.out.println("Double shot of coffee.....");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void steamMilk() { System.out.println("Steaming Almond Milk...."); }
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package factory.coffee;
|
||||
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
MoonBucks moonBucks = new MoonBucks();
|
||||
|
||||
Coffee latte = moonBucks.orderCoffee("latte");
|
||||
System.out.println("-------------------------------------\nLatte Was Ordered: " + latte);
|
||||
|
||||
System.out.println();
|
||||
|
||||
Coffee cortado = moonBucks.orderCoffee("cortado");
|
||||
System.out.println("-------------------------------------\nCortado Was Ordered: " + cortado);
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package factory.coffee;
|
||||
|
||||
public class MoonBucks {
|
||||
|
||||
public Coffee orderCoffee(String type){
|
||||
|
||||
CoffeeFactory coffeeFactory = new CoffeeFactory();
|
||||
|
||||
Coffee coffee = coffeeFactory.createCoffee(type);
|
||||
System.out.println("-------Brewing a " + coffee.getName() + "-------");
|
||||
coffee.grindBeans();
|
||||
coffee.steamMilk();
|
||||
coffee.getCup();
|
||||
coffee.pourShot();
|
||||
coffee.serveCoffee();
|
||||
|
||||
return coffee;
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue