装饰器模式:
将需要装饰的主方法作为某种参数传递,然后对其进行装饰
场景描述:
假设有一个咖啡店,顾客可以根据自己的喜好选择不同的咖啡和添加不同的配料(比如糖和奶油)。
java
public class MyTest {
public static void main(String[] args) {
Coffee mycoffee = new MyCoffee();
DecoratorCoffee sugar = new takeSuger(mycoffee);
takeCream takeCream = new takeCream(sugar);
takeCream.getCoffee();
}
}
interface Coffee {
void getCoffee();
}
abstract class DecoratorCoffee implements Coffee {
Coffee coffee;
public DecoratorCoffee(Coffee coffee) {
this.coffee = coffee;
}
public void getcoffee() {
coffee.getCoffee();
}
}
class MyCoffee implements Coffee {
public void getCoffee() {
System.out.println("接咖啡");
}
}
class takeSuger extends DecoratorCoffee {
public takeSuger(Coffee coffee) {
super(coffee);
}
@Override
public void getCoffee() {
System.out.println("加糖");
super.getcoffee();
}
}
class takeCream extends DecoratorCoffee {
public takeCream(Coffee coffee) {
super(coffee);
}
@Override
public void getCoffee() {
System.out.println("加奶油");
super.getcoffee();
}
}