Можем ли мы сохранить список функций внутри Pattern Decorator вместо использования вложения? - PullRequest
2 голосов
/ 09 июня 2009

Является ли Pattern Decorator главным образом для получения объекта с динамически выбранными дополнительными функциями?

Можем ли мы сделать что-то вроде

window = Window.new(widht, height, x, y, [UseScrollBar.new, DrawBorder.new])

чтобы при вызове draw () мы также перебирали дополнительные функции?

Например, если нашей целью является запись_файла в файл, то с помощью вложения мы должны писать несколько раз (несколько строк в файл), но с помощью цикла мы можем быть более гибкими в том, что мы делаем: иметь текстовая строка, но цикл по списку дополнительных функций, поэтому, если он пуст, мы пишем простую строку, но если есть AddLineNumber или AddTimeStamp, то строка изменяется, а затем в файл записывается одна строка .

Я надеюсь, что понимаю схему достаточно, чтобы дать точный вопрос. Реализуют ли некоторые люди Pattern Decorator, используя список дополнительных функций вместо вложения?

Ответы [ 2 ]

1 голос
/ 09 июля 2009

Зависит от того, является ли список добавленных функциональных возможностей фиксированным или должен быть гибким. У вас также может быть какой-то строитель для создания цепочки для вас:

window = WindowBuilder.new
                      .setWidth(w)
                      .setHeight(h)
                      .setX(x)
                      .setY(y)
                      .addScrollBar(scrollBar)
                      .addBorder(border)
                      .getWindow(h);

и у вас будет BorderDecorator, указывает на декоратор полосы прокрутки, указывает на фактическое окно.

0 голосов
/ 16 июня 2009

я чувствую, что это возможно. будь то список дополнительных функций или вложенный, он все же должен иметь возможность предоставлять дополнительные функции.

...