I use Composite and Decorator in the systems of Addresses in Messenger Library. This gives me Composite Addresses that act to send the same message to multiple Addresses, plus various ways of creating Addresses that modify messages on sending them (such as relabeling the message). It works well with Addresses as they only have two basic methods to override ("Send Message" and "Is Address Valid") so it is easy to write a decorator class.