Decorators and Separation of Concerns

Learn how decorators help achieve high cohesion and low coupling in software design.

We have already explored the idea of reusing code and noticed that a key element of reusing code is having components that are cohesive. This means that they should have the minimum level of responsibility—do one thing, one thing only, and do it well. The smaller our components, the more reusable they are, and the more they can be applied in a different context without carrying extra behavior that will cause coupling and dependencies, which will make the software rigid.

Refactoring a decorator

To explore what that means, let's revisit one of the decorators that we used in a previous example. We created a decorator that traced the execution of certain functions with code similar to the following:

Get hands-on with 1400+ tech skills courses.