一站式网络营销,创意设计素描,彩票网站平台,木藕设计网站大全1、问题描述
小明喜欢品尝不同口味的咖啡#xff0c;他发现每种咖啡都可以加入不同的调料#xff0c;比如牛奶、糖和巧克力。他决定使用装饰者模式制作自己喜欢的咖啡。 请设计一个简单的咖啡制作系统#xff0c;使用装饰者模式为咖啡添加不同的调料。系统支持两种咖啡类型…1、问题描述
小明喜欢品尝不同口味的咖啡他发现每种咖啡都可以加入不同的调料比如牛奶、糖和巧克力。他决定使用装饰者模式制作自己喜欢的咖啡。 请设计一个简单的咖啡制作系统使用装饰者模式为咖啡添加不同的调料。系统支持两种咖啡类型黑咖啡Black Coffee和拿铁Latte。
输入描述 多行输入每行包含两个数字。第一个数字表示咖啡的选择1 表示黑咖啡2 表示拿铁第二个数字表示要添加的调料类型1 表示牛奶2 表示糖。
输入示例 1 1 2 2
输出示例 Brewing Black Coffee Adding Milk Brewing Latte Adding Sugar
2、装饰者模式
装饰模式可以在不定义⼦类的情况下动态的给对象添加⼀些额外的功能。具体的做法是装饰类包含原始对象的引用为原始对象动态添加新的⾏为⽽⽆需修改其代码
3、代码
import java.util.*;public class Main{public static void main(String[] args){Scanner scnew Scanner(System.in);for(int i0;sc.hasNextInt();i){int tsc.nextInt();int addsc.nextInt();if(t1){Coffee cnew BlackCoffee();ConcreteDecorate cDnew ConcreteDecorate(c);cD.display(add);}else if(t2){Coffee cnew Latte();ConcreteDecorate cDnew ConcreteDecorate(c);cD.display(add);}}}
}
interface Coffee{void display(int tag);
}class BlackCoffee implements Coffee{Overridepublic void display(int tag) {System.out.println(Brewing Black Coffee);}
}class Latte implements Coffee{Overridepublic void display(int tag) {System.out.println(Brewing Latte);}
}
abstract class Decorate implements Coffee{private Coffee coffee;public Decorate(Coffee c){this.coffeec;}Overridepublic void display(int tag) {coffee.display(tag);}
}class ConcreteDecorate extends Decorate{public ConcreteDecorate(Coffee c) {super(c);}Overridepublic void display(int tag) {super.display(tag);if (tag2){System.out.println(Adding Sugar);}else if(tag1){System.out.println(Adding Milk);}}}