定义接口:
// 咖啡制作接口  
interface CoffeeMaker {  
    Coffee makeCoffee(String type);  
}  
  
// 咖啡店接口  
interface CoffeeShop {  
    void orderCoffee(String type, CoffeeConsumer consumer);  
}  
  
// 咖啡消费者接口  
interface CoffeeConsumer {  
    void receiveCoffee(Coffee coffee);  
}  
  
// 咖啡类  
class Coffee {  
    private String type;  
  
    public Coffee(String type) {  
        this.type = type;  
    }  
  
    @Override  
    public String toString() {  
        return "Coffee of type: " + type;  
    }  
}
实现接口:
// 咖啡工厂实现类  
class CoffeeFactory implements CoffeeMaker {  
    @Override  
    public Coffee makeCoffee(String type) {  
        System.out.println("CoffeeFactory is making a coffee of type: " + type);  
        return new Coffee(type);  
    }  
}  
  
// 咖啡店实现类  
class LocalCoffeeShop implements CoffeeShop {  
    private final CoffeeMaker coffeeMaker;  
  
    public LocalCoffeeShop(CoffeeMaker coffeeMaker) {  
        this.coffeeMaker = coffeeMaker;  
    }  
  
    @Override  
    public void orderCoffee(String type, CoffeeConsumer consumer) {  
        System.out.println("LocalCoffeeShop is ordering a coffee of type: " + type);  
        Coffee coffee = coffeeMaker.makeCoffee(type);  
        consumer.receiveCoffee(coffee);  
    }  
}  
  
// 用户实现类  
class CoffeeLover implements CoffeeConsumer {  
    @Override  
    public void receiveCoffee(Coffee coffee) {  
        System.out.println("CoffeeLover received: " + coffee);  
    }  
}
测试程序:
public class CoffeeFlowDemo {  
    public static void main(String[] args) {  
        // 创建咖啡工厂  
        CoffeeMaker coffeeMaker = new CoffeeFactory();  
  
        // 创建咖啡店  
        CoffeeShop coffeeShop = new LocalCoffeeShop(coffeeMaker);  
  
        // 创建用户  
        CoffeeConsumer coffeeLover = new CoffeeLover();  
  
        // 咖啡店订购咖啡并给用户  
        coffeeShop.orderCoffee("Latte", coffeeLover);  
    }  
}
CoffeeMaker接口定义了制作咖啡的方法,CoffeeShop接口定义了订购咖啡的方法,CoffeeConsumer接口定义了接收咖啡的方法。CoffeeFactory、LocalCoffeeShop和CoffeeLover分别实现了这些接口,并模拟了咖啡制作、订购和接收的流程。
总结:今天老师讲到的接口有一点理解不过来,只理解了一个大概,java的世界从接口开始,理解接口才能够真正学会java,看来得多敲代码了。



![[图解]DDD领域驱动设计伪创新-通用语言01](https://img-blog.csdnimg.cn/direct/592e9334762f4b1dbbad0ee164c841ba.png)















