Structural patterns may be used to create new functionality using the existing data types.
Adapter may be used to impersonate an existing data type.
Decorator may be used to add extra responsibilities to an existing data type without changing its interface.
Bridge may be used to separate an interface of a data type from the terms of its implementation when both can vary.
\(\blacksquare\)