Factory Factories are used to build objects conforming to types or protocols at runtime while hiding implementation details. A good example is using Factory for consistent design elements, such as requesting a TitleButton from a Factory. You know it will give you a UIButton, but the factory controls to style. Adaptor This is used to adapt functionality to work with something. Often used to handle third-party code you don't have access too. An example, if you have a User class that determines what a user is, and you have a shareable protocol that defines methods that provide a sharing titile, and sharing detail. You may not want User to conform to Shareable as that would violate SRP. So you have a UserSharableAdaptor class that conforms to Shareable and is injected with a User. The adapter users whatever data it needs from the User, and adds any text to conform to the Shareable protocol such as the title could be "This is user \(user.name)" Decorator Decorators take in certain types or protocols, then enhances their functionality by also conforming to the type or protocol. For example, you have a Product protocol. It has a price and a name. You have a instance of type FullPriceProduct that conforms to Product. You want to discount it so you init a DiscountProductDecorator, that expects an injected Product, and conforms to Product itself. In it's internal implementation it takes the price of the injected product and discounts it before returning it through it's Product interface. Command TBD Template The template pattern defines a baseClass that has numerous methods that inheriters must implement. You may use when you want all subclasses to follow a similar process for achieving their functionality. For example, you may have a ReportGenerator base class that requires implementations of inputtingData, processingData, and returningData. Each subclass will have to implement these methods. An example of a template is UIViewController, that has viewWillAppear, viewWillLoad, viewDidAppear etc. all places you can hook into the original algorthym