It is done after other lower-level software designs are completed and typically applied on complex system interactions using flowcharts or sequence diagrams.
Procedural Design
(Structured, Sequence, Condition, Repetition)
It is an implicit process of defining classes or modules, internal data structures, internal responsibilities and interfaces
Component-Level Design
It is a tried and tested solution to some of the commonly occurring problems in software design. Popular in Java but is also applicable in programming languages supporting OOP
Design Pattern
It provides various object creation mechanisms, which increase flexibility and reuse of existing code.
Structural Patterns
It ensured that only one instance of a class exists and offers a unified access point to it.
Singleton
It allows subclasses to supply concrete implementations that specify the exact object type to be instantiated
Factory Method
It allows the creation of related objects sharing the same interfaces without specifying their exact types
Abstract factory
It allows the step by step construction of complex objects to produce different types of representations using the same code
Builder
It enables object creation through cloning of existing instances, reducing the need for direct instantiation of new objects
Prototype
It explains how to assembly objects and classes into larger structures, while keeping these structures flexible and efficient.
Structural Design Patterns
It enables seamless interaction between objects with incompatible interfaces
Adapter
It simplifies interactions with complex systems by providing a unified interface
Facade
It attaches new behaviors to objects by wrapping in a special object that adds new functionality
Decorator
Other structural Patterns
Proxy
Bridge
Composite
Flyweight
It deals with algorithms and the distribution of responsibilities among objects
Behavioral Design Patterns
Behavioral Patterns (10)
Iterator
Chain of responsibility
Observer
Mediator
State
Strategy
Template Method
Visitor
Command
Memento
This behavioral pattern traverses a collection without exposing its structure
Iterator
This behavioral pattern sends a request through handlers for processing
Chain of responsibility
This behavioral pattern allows multiple observers to react to state changes.
Observer
This centralizes communication between objects
Mediator
This allows change in behavior based on its internal state
State
This enables algorithm selection at runtime for flexibility
Strategy
This defines a skeleton, allowing subclasses to override steps
Template method
This enables new operations without class changes
Visitor