Software design pattern is a reusable solution to a commonly occurring problem.
- Strategy (B): allows you pick algorithms (approaches) at runtime
- Iterator (B): lets you traverse elements of a collection without exposing its underlying representation (list, stack, tree etc)
- Builder (C): Allows creation of complex objects in step-wise formats
- Singleton (C): Allows and guarantees a single instance of a class
- Adapter (S): Allows you to create a bridge between incompatible classes. Makes existing classes work with new ones without touching old codebase.
Design smell which is caused by bad software design.
They are certain patterns in software development that are considered bad programming practices.
- Spaghetti Code
- Dead code
- Boat anchor
- Copy and paste