父类:Coffee
package com.lxk.factory;
public abstract class Coffee {
public abstract String getName() ;
public void addMilk(){
System.out.println("add milk");
}
}
子类1:BlackCoffee
package com.lxk.factory;
public class BlackCoffee extends Coffee{
@Override
public String getName(){
return "BlackCoffee";
}
}
子类2:Latte
package com.lxk.factory;
public class Latte extends Coffee{
@Override
public String getName(){
return "LatteCoffee";
}
}
coffeeFactory
package com.lxk.factory;
public class CoffeeFactory {
public Coffee createCoffee(String type){
Coffee coffee = null;
if("Black".equals(type)){
coffee = new BlackCoffee();
}else if("Latte".equals(type)){
coffee = new Latte();
}
return coffee;
}
}
CoffeeStore
package com.lxk.factory;
public class CoffeeStore {
public Coffee orderCoffee(String type){
CoffeeFactory factory = new CoffeeFactory();
Coffee coffee = factory.createCoffee(type);
return coffee;
}
}
消费者
package com.lxk.factory;
public class Client {
public static void main(String[] args) {
CoffeeStore store = new CoffeeStore();
Coffee coffee = store.orderCoffee("Latte");
System.out.println(coffee.getName());
System.out.println(coffee);
}
}
输出
"C:\Program Files\Java\jdk-17\bin\java.exe" "-javaagent:C:\Program Files\IntelliJ IDEA2023\lib\idea_rt.jar=50693:C:\Program Files\IntelliJ IDEA2023\bin" -Dfile.encoding=UTF-8 -classpath D:\test\untitled\out\production\untitled com.lxk.factory.Client
LatteCoffee
com.lxk.factory.Latte@6d311334
Process finished with exit code 0