One of my weekly class assignment was to put into practice a combination of design patterns to eventually form another one called the Transaction pattern. Here are the pattern I mastered to do so : Composite : used to treat uniformly a group of objects the same way as a single instance of the same type of object. Visitor, iterator : used to define a new operation for (some) classes of an object structure without changing the classes. Memento : used for persistence and implementation of the backup. Template Method : used to delegate certain methods to the sub-classes.