Whenever you implement and aggregate an interface, using the aggregated object to provide part of the implemented functionality, you will have a decorator pattern. The post you linked matches that description and therefore it is a decorator pattern.
From Head First, Design Patterns:
The Decorator Pattern attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality
NOTE: This definition is exactly the same that the one you can find in the GoF book: Design Patterns: Elements of Reusable Object-Oriented Software and the same that you find at the link you posted.
With your EmployeeDecorator
subclasses you are adding services to Employee
being this "intermediate" class (EmployeeDecorator
) a way to encapsulate delegation at a parent class so concrete subclases such as TeamMember
and TeamLead
do not replicate the delegation code.