Я бы сказал в некотором смысле, да, AOP - это реализация шаблона декоратора.
Для меня самые большие различия были бы в том, как он реализован и как он применяется.
Традиционные декораторы, как правило, представляют собой объекты, которые либо создают явно декорируемый объект, либо включаются точкой расширения базового объекта.
AOP обычно указывается более «декларативным» образом - традиционные декораторы являются общей частью основного кода.
Традиционные декораторы обычно применимы только к определенным классам или интерфейсам и обычноприменяется на уровне экземпляра.AOP (в целом) может обернуть функциональность вокруг произвольно выбранного кода на «уровне земли» - поведение будет распространяться до всех экземпляров того, к чему применяется аспект.Это то, что позволяет ему удовлетворить свое требование «сквозной функциональности»: оно не обязательно ограничено настолько узкой областью, как декораторы.
Однако это зависит от базового языка - некоторые являются более гибкимичем другие.Вышесказанное относится больше к «статическим» языкам (например, Java), а не к языку, подобному Ruby, где то, что выглядит как традиционный декоратор, может быть применено к одному экземпляру или стать частью определения класса.