Предположим, у нас есть интерфейс Logger и типичный класс декоратора, который просто перенаправляет вызовы метода во внутренний объект Logger.
Проблема возникает, когда декоратор применяется к объекту, реализующему интерфейс:
public static void main(String[] args)
{
Logger cloneable = new CloneableLogger(); //implements Cloneable
Logger colorized = new ColorizedDecorator(cloneable, Color.GREEN);
//returns false!
System.out.println(colorized instanceof Cloneable);
}
Я придумал два решения со своими недостатками:
Создайте отражающее статическое логическое значение isInstance( Logger logger, Class clazz) метод, который проверяет, является ли регистратор декоратором, и обходит дерево «украшений».
Недостаток: отражение
Создайте декоратор для каждой возможной комбинации, например: класс CloneableColorizedDecorator расширяет ColorizedDecorator реализует Cloneable
Недостаток: взрывной рост классов, что в первую очередь противоречит цели использования Decorator.
Предположим, у нас есть интерфейс Logger и типичный класс декоратора, который просто перенаправляет вызовы метода во внутренний объект Logger. Проблема возникает, когда декоратор применяется к объекту, реализующему интерфейс: [code]public static void main(String[] args) { Logger cloneable = new CloneableLogger(); //implements Cloneable Logger colorized = new ColorizedDecorator(cloneable, Color.GREEN);
//returns false! System.out.println(colorized instanceof Cloneable); } [/code] Я придумал два решения со своими недостатками: [list] [*]Создайте отражающее статическое логическое значение isInstance( Logger logger, Class clazz) метод, который проверяет, является ли регистратор декоратором, и обходит дерево «украшений».
[b]Недостаток: отражение[/b]
[*]Создайте декоратор для каждой возможной комбинации, например: класс CloneableColorizedDecorator расширяет ColorizedDecorator реализует Cloneable
[b]Недостаток: взрывной рост классов, что в первую очередь противоречит цели использования Decorator.[/b]
Предположим, у нас есть интерфейс Logger и типичный класс декоратора, который просто перенаправляет вызовы метода во внутренний объект Logger.
Проблема возникает, когда декоратор применяется к объекту, реализующему интерфейс:
public static void...
Когда я создаю три объекта встроенного типа int и присваиваю им одинаковое значение, они будут иметь одну и ту же ссылку, но когда я создаю три объекта из своего класса и присваиваю им разные значения, у них будут разные ссылки.
Пример:
A = 20
B =...
Я пытаюсь протестировать новый API AppIntents, который сейчас доступен в бета-версии iOS16. Глядя на документацию, реализация кажется довольно простой, но после ее реализации я не вижу своего AppIntent в приложении «Ярлыки». Устройство работает под...
Я использую beforeFilter в нескольких контроллерах, чтобы разрешить определенные действия без необходимости входа в систему. Я успешно использовал его довольно часто. время. Однако я заметил, что не могу запустить...