Да, я делал что-то подобное раньше и склоняюсь к слову, которое указывает, что делает дополнительная функциональность.
Например, базовый класс Vector
может выполнять только очень простые векторные операции (сложение, скалярное произведение), а класс Vectors
может иметь различные статические вспомогательные методы (перекрестные произведения, проекции и т. Д.). Затем FluentVector
включает в себя все эти вспомогательные операции, одновременно изменяя базовый Vector
.
Однако это не шаблон декоратора - декоратор выдает разные «декорированные» результаты с одинаковым интерфейсом. Это шаблон фасада - другой интерфейс с одной и той же базовой функцией.
Кроме того, имейте в виду, что в вашем расширенном API могут быть разные способы доставки одной и той же функции. Возвращаясь к моему примеру Vector
, можно не захотеть изменять базовый Vector
при каждой операции цепочки и вместо этого вводить новый Vector
- это может быть ImmutableFluentVector
или что-то подобное. API будет идентичным, за исключением спецификации побочных эффектов. Просто что-то иметь в виду.