Proxy

Sometime there is already a process or program in place.
Let's take the example used for the driver design pattern.
The is program able to print on printers.
You want just to add some actions : logs, checks, restrictions...
Of course, you don't want break this existing program.
You just want add a layout between the program and printers.

THIS IS THE PROXY DESIGN PATTERN !!!

When you will be in the same situation =
You want just to add actions around existing methods.

Don't modify objects adding your actions, just make a proxy !!!

You proxy will implement the same interface that your object.
Your proxy will contain your object.
Each method of the interface will call the same method of the object.
You will be able to add actions before, after, modify parameters...