【发布时间】:2014-12-29 02:41:18
【问题描述】:
假设我有一个Animal 抽象类和三个类Dog、Cat 和Bear,它们扩展了Animal 类。 Animal 类有抽象方法 getDescription。 Dog 类有一个方法 getNumberOfHomeworksEaten,但 Cat 和 Bear 没有。假设我有一个装饰器YellowStripes、BlueStripes、GreenStripes,它们都扩展了Animal 类并装饰了getDescription 方法。如果我用装饰器装饰 Dog、Cat 和 Bear:
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
如何访问dog 的getNumberOfHomeworksEaten 方法?在每个装饰器中都有getNumberOfHomeworksEaten 是没有意义的,因为Cat 和Bear 没有那个方法。
【问题讨论】:
标签: java inheritance design-patterns decorator