This project was created to learn about design patterns.
-
Identify the aspects of your application that vary and separate them from what stays same.
-
Program to an interface and not to an implementation.
-
Favour composition over inheritance.
-
Loosely coupled objects should be favoured.
-
Classes should be closed for modification but should be open for extension.
-
Depend upon abstractions but do not depend upon concrete classes (Dependency inversion principle).
-
Law of demeter or principle of least knowledge or friends.
1)Strategy
2)Observer
3)Decorator
4)Simple factory
5)Abstract factory
6)Singleton
7)Command
8)Adapter
9)Facade
-
Iterator (not implemented as STL is the best resource for aggregates and iterators)
-
Composite
-
State