Есть два аспекта: «диспетчеризация», опция выбирается из меню или нажимается кнопка, и запускается некоторый код.Тогда есть фактический код, который выполняется.
Я не знаю, на какую инфраструктуру пользовательского интерфейса вы ссылаетесь, но я ожидаю увидеть паттерны Observer и Command, используемые в обоих случаях.Интересно, случается ли то, что случай Menu и случай Button просто реализуются вашей средой таким образом, что делают различные аспекты видимыми.
Итак, для меню вы предоставляете различные объекты команд, вы фактически никогда не видите внутреннийдиспетчеризация, которая вызывает вашу команду для вызова.Я предполагаю, что под прикрытием должна происходить некоторая обработка событий, поэтому шаблон Observer вполне может быть использован, просто вы его не видите.
В случае кнопки можно подумать о вызываемом кодекак объект команды, но мы более явно подключаем его к событию, поэтому сначала видим шаблон Observer.