Software design patterns

Nature is formed by patterns. As my data structures teacher, Dr. Méndez, keeps saying in our class: “PATTERNS!”. So yeah.

Software desing patterns consist in, as you may think, patterns when designin software (what a great reasoning). But why is this important? When designing with patterns, you have some advantages:

  • Code reutilization: by following the same pattern, one can always have a starting base, instead of starting by scratch.
  • Standarization: using patterns, code becomes simpler to read, easier to understand and, if another developer continues the work, he/she will have a lot less problems with it.
  • Already-working solution: if one pattern works, then it might work with another project.

Software design patterns can be classified into the following:

  • Creational: focused on the creation of objects and the manipulation of them. Examples:
    • Builder
    • Object pool
    • Prototype
  • Structural: focused on relationships between entities. Examples:
    • Adapter
    • Bridge
    • Decorator
  • Behavioral: focused on the behavior of and within objects. Examples:
    • Iterator
    • Publish/subscribe
    • Template
  • Concurrency: focused on multi threading. Examples:
    • Active object
    • Reactor
    • Thread-specific storage
flickr photo by Avital Pinnick https://flickr.com/photos/spindexr/6678273769 shared under a Creative Commons (BY-NC-ND) license
flickr photo by Avital Pinnick https://flickr.com/photos/spindexr/6678273769 shared under a Creative Commons (BY-NC-ND) license