Декоратор Pattern, украшающий подклассы, которые содержат различные методы
Предположим, у меня есть 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
Как я могу получить доступ к getNumberOfHomeworksEaten
метод для dog
? Не было бы смысла иметь getNumberOfHomeworksEaten
в каждом декораторе с Cat
а также Bear
нет такого метода.
1 ответ
Решение
Если вы бросили dog
в Dog
Вы сможете использовать этот метод.
Animal animal = new Dog();
animal = YellowStripes(animal);
animal = BlueStripes(animal);
animal = GreenStripes(animal);
Dog dog = (Dog) animal;
dog.getNumberOfHomeworksEaten();