Design-Patterns Design principles (SOLID) Single responsibility Open closed principle Liskov's substitution principle Interface segregation principle Dependency inversion principle OOP principles Encapsulate what varies Program for interface not implementation Favor composition over inheritance Most used design patterns: Structural Factory method Notes Code Singleton Notes Code Creational Adapter Notes Code Composite Notes Code Decorator Notes Code Proxy Notes Code Behavioral Chain of Responsibility Notes Code Command Notes Code Iterator Notes Code Observer Notes Code State Notes Code Strategy Notes Code