装饰模式:给对象添加装饰、添加功能。
例如有一块蛋糕,添上草莓就是草莓蛋糕,添上巧克力就是巧克力蛋糕,本质都是蛋糕,就是装饰物不同。
//定义蛋糕接口,
interface Cake{
void print();
}
//具体的蛋糕,
class ConcreteCake implements Cake{
void print(){
system.out.print("这是一个蛋糕")
}
}
//抽象装饰类,继承蛋糕接口,与蛋糕类具有一致性
abstract class Decorator implements Cake{
//持有蛋糕接口,
Cake cake;
}
//具体的草莓装饰
class Strawberry extends Decorator{
Strawberry(Cake cake){
this.cake=cake;
}
print(){
system.out.print("添加草莓装饰")
cake.print();
}
}
//具体的巧克力装饰
class Chocolate extends Decorator{
Chocolate (Cake cake){
this.cake=cake;
}
print(){
system.out.print("添加巧克力装饰")
cake.print();
}
}
public class Main {
public static void main(String[]args){
Cake cake=new Chocolate(new Strawberry (new ConcreteCake ()));
cake.print();
//输出结果
添加巧克力装饰
添加草莓装饰
这是一个蛋糕
}
}