Design patterns are solutions to software design problems you find again and again in real-world application development. Patterns are about reusable designs, creation of objects and interactions of objects.
Design Patterns can be broadly categorized in following three categories
Creational Design Pattern
- Factory Method
- Abstract Factory
Structural Design Patterns
Behavioural Design Patterns
- Chain of Responsibility
- Template Method
Anti-patterns are certain patterns in software development that are considered bad programming practices.
As opposed to design patterns which are common approaches to common problems which have been formalized and are generally considered a good development practice, anti-patterns are the opposite and are undesirable.
For example, in object-oriented programming, the idea is to separate the software into small pieces called objects. An anti-pattern in object-oriented programming is a God object which performs a lot of functions which would be better separated into different objects.