Our trainer Mr. Shivprasad Koirala completed almost 100 lectures of design pattern in SBS (http://stepbystepschools.net/?page_id=319) and big companies.
Below are simple one liner revisions from his class.
These are not GOF, EVANS, Grady definitions as i find them pretty complex. So its in my own words what i understood. Any rectifications let me know.
DDD :- Your code architecture should reflect the domain model.
Ubiquitous Language :- Developer and end users who will use the software should speak same language.
Repository :- Decouples Dal and Model.
UOW :- Implements transaction in Repositories.
Aggregate root :- All contained objects are controlled through a central object.
Iterator :- You want to browse Aggregate root contained objects and also respect integrity of Aggregate root.
Context Boundary :- A Customer object of validation is different from a DTO customer object.
CQRS :- Insert , update , delete objects are different from Search and query objects.
Simple Factory :- Decouples simple single object creation.
Factory pattern :- Complex permutation and combination object creation.
Prototype :- Create a clone copy of the current object.
Mediator :- Simplifies complex and chatty communication between objects.
Facade :- Simplified interface over lot of subsystems.
Decorator :- Add logics dynamically without touching the main logic. Good for maintenance scenarios.
Template method :- Fixed sequence but you want to override the individual steps of the sequence.
Composite :- Treat aggregate and composed objects in a uniform manner.
Adapter :- You have third party interfaces which you want to make it compatible with your project interfaces.
NULL pattern :- Object does nothing , its like by just bypassing / mocking.
Proxy :- Not used much , in .NET auto implemented mostly by WCF, WS.
Flyweight :- Reduce RAM stress by creating shared copy of same data.
Singleton :- A single instance which supports thread safety and lazy loading.
Interpreter :- For creating language elements like “Book ticket del-mum” and it should just work.
Memento :- Capture object state so that it can be reversed. Like Cancel and Reset functionality.
DTO :- Simple setters and getter for transferring data across layers.