Software Design: Patterns

As we know, software design isn’t the code itself but the way that code must be structured in order to have a higher level of control over it. Patterns themselves are repeatable solutions to problems that occur constantly in software design. These type of structured ways of designing software aren’t finished designs that can be already transformed into code but they are descriptions that show how to solve certain problems. They are normally templates used in order to have a richer idea on what it will be developed in the future.

There are mainly 3 types of design patterns:

  • Creational design

    These patterns approach design by the instantiation of classes. They are divided in class creation which inherit in the instantiation step and object creational patterns that use delegation as it should be in order to achieve certain task. Some of these are:

    • Abstract Factory
    • Builder
    • Factory Method
    • Object Pool
    • Prototype
    • Singleton
  • Structural design

    This type of pattern takes a look on how classes and objects are composed. The creation of compose interfaces is mainly by using iheritance. Some of these are:

    • Adapter
    • Bridge
    • Composite
    • Decorator
    • Facade
    • Flyweight
    • Private Class Data
    • Proxy
  • Behavioral design patterns

    The interaction between objects inside a class happens in a behavioral pattern. These patterns are mainly focused with communication between objects. Some examples of these are:

    • Chain of responsibility
    • Command
    • Interpretre
    • Mediator
    • Memeto
    • Null Object
    • Observer
    • State
    • Strategy
    • Template method
    • Visitor

Bloggers involved in the creation of this post:

Carlos Pedraza

Miguel Cabral

Victor Najar

Juan Pablo Ramírez

All this information was taken from Sourcemaking.com and all rights belong to them.