gpt4 book ai didi

java - 装饰者模式,装饰包含不同方法的子类

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:41 25 4
gpt4 key购买 nike

假设我有一个 Animal 抽象类和三个扩展类 DogCatBear 动物 类。 Animal 类有抽象方法getDescriptionDog 类有一个方法 getNumberOfHomeworksEaten,但是 CatBear 没有。假设我有一个装饰器 YellowStripesBlueStripesGreenStripes,它们都扩展了 Animal 类并装饰了 getDescription 方法。如果我用装饰器装饰 DogCatBear :

Animal dog = new Dog();
dog = YellowStripes(dog);
dog = BlueStripes(dog);
dog = GreenStripes(dog);

Cat cat = new Cat();
//decorate cat

Bear bear = new Bear();
//decorate bear

如何访问 doggetNumberOfHomeworksEaten 方法?在每个装饰器中使用 getNumberOfHomeworksEaten 是没有意义的,因为 CatBear 没有那个方法。

最佳答案

如果您将 dog 转换为 Dog,您将能够使用此方法。

Animal animal = new Dog();
animal = YellowStripes(animal);
animal = BlueStripes(animal);
animal = GreenStripes(animal);

Dog dog = (Dog) animal;
dog.getNumberOfHomeworksEaten();

关于java - 装饰者模式,装饰包含不同方法的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com