Любые паттерны - это лишь набор рекомендаций (шаблонов), самое главно понять их суть - реализации одного и того же шаблона могут быть самыми разнообразными, тем более в разных языках.
Можно писать-дописывать свои реализации, если так будет удобнее в вашем конкретном случае - главное при этом не исказить смысл до противоположного.
Вернёмся к вашему вопросу о паттерне комманда - весь смысл этого паттерна - обособить действие в отдельный объект. Соответственно результат выполнения команды должен быть спрятан в этом объекте, кроме того, паттерн Команда не говорит ничего, каким должна быть эта команда - синхронная, асинхронная или ёще какая, соответственно никто не гарантирует, что execute может возвратить что-то.
Чаще всего - Команда - это объект, который совершает действия над другими объектами, передаными в качестве параметров конструктора.
Если вы измените это поведение - ничего страшного, но это уже будет другой паттерн.
Добавлено через 3 минуты
Цитата:
|
Но если шаблон немного не подходит под задачу, то это означает, что нужно от него отказаться или можно его видоизменить или даже компоновать с другими шаблонами?
|
Этот подход в корне неверен. Нельзя просто так взять и впихнуть конкретный паттерн в невпихуемое. Именно для задачи мы выбираем подходящий шаблон или пишем свой велосипед и никак иначе.
Добавлено через 12 минут
Цитата:
|
А вот если бы Вы знали, что этот класс Декоратор, а эти Momento и Proxy.
|
Это очень плохие имена, которые всё равно не внесут ясности. Называть имена по использующимся в них паттернам - упячка, т.к. один и тот же класс может быть одновременно как Декоратором, так и Контроллером, и даже, одновременно с этим, Видом, смотря с какой точки зрения на него посмотреть.