Chain of Responsibility suits scenarios where multiple handlers might process the request, and you want flexible control over which one handles it (or if none do). It’s ideal when each handler can decide to pass the request along the chain.
Decorator, on the other hand, is purely for enhancing functionality—adding new behaviors or responsibilities directly to objects without affecting others of the same class. It’s best when you need layered, composable behaviors on a single object.