装饰器模式

装饰器模式:

将需要装饰的主方法作为某种参数传递,然后对其进行装饰

场景描述:

假设有一个咖啡店,顾客可以根据自己的喜好选择不同的咖啡和添加不同的配料(比如糖和奶油)。

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();

    }
}

相关推荐

  1. 装饰模式

    2023-12-14 11:04:02       39 阅读
  2. 装饰设计模式

    2023-12-14 11:04:02       28 阅读
  3. 装饰模式(Decorator)

    2023-12-14 11:04:02       33 阅读
  4. 装饰模式

    2023-12-14 11:04:02       31 阅读
  5. 装饰模式

    2023-12-14 11:04:02       29 阅读
  6. 装饰模式

    2023-12-14 11:04:02       21 阅读
  7. 装饰模式

    2023-12-14 11:04:02       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-14 11:04:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-14 11:04:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-14 11:04:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-14 11:04:02       18 阅读

热门阅读

  1. 枚举+链对缓存实现以读取为主的请求接口

    2023-12-14 11:04:02       31 阅读
  2. 如何避免缓存穿透、缓存击穿、缓存雪崩?

    2023-12-14 11:04:02       42 阅读
  3. CUDA锁页内存的使用

    2023-12-14 11:04:02       37 阅读
  4. 跨线程保持上下文

    2023-12-14 11:04:02       38 阅读
  5. linux的命令和vi的使用

    2023-12-14 11:04:02       33 阅读
  6. xtu oj 1271 color

    2023-12-14 11:04:02       37 阅读
  7. Ceph入门到精通-TCP和UDP相关的指标

    2023-12-14 11:04:02       27 阅读
  8. ceph-deploy 遇到的使用问题

    2023-12-14 11:04:02       40 阅读
  9. 堆和栈的区别

    2023-12-14 11:04:02       34 阅读