[Design Pattern] Flyweight
Flyweight is a structural design pattern that lets you fit more objects into the available amount of RAM by sharing common parts of state between multiple objects instead of keeping all of the data in each object.
[Design Pattern] Visitor
Visitor is a behavioral design pattern that lets you separate algorithms from the objects on which they operate.
[Design Pattern] Template Method
Template Method is a behavioral design pattern that defines the skeleton of an algorithm in the superclass but lets subclasses override specific steps of the algorithm without changing its structure.
[Design Pattern] Strategy
Strategy is a behavioral design pattern that lets you define a family of algorithms, put each of them into a separate class, and make their objects interchangeable.
[Design Pattern] State
State is a behavioral design pattern that lets an object alter its behavior when its internal state changes. It appears as if the object changed its class.