Home > Development > Design Patterns In Object-Oriented Software

Design Patterns In Object-Oriented Software

In Computer Science, a Design Pattern is a way of having a solution of a certain reoccurring problem. This solution is usually the best practice to solve that problem so there is no need to invent a new solution unless it appeared eventually that it is ultimately necessary to have a new best practice solution to that problem.

In other words, Design Patterns are one approach of the Software Reuse concept.

A Design Pattern is usually aimed at software components design in the software engineering. This concept became more popular after the book: Design Patterns: Elements of Reusable Object-Oriented Software. This book was written by 4 authors who are referred to as the Gang of Four or GoF. This book discusses 23 software design patterns that I think every developer must know so they can come up with good software design in a timely-efficient manner for their intended software system. According to the GoF book, these patters were classified by 3 categories: Creational Patterns, Structural Patterns, and Behavioral Patterns.


Creational Patterns

Creational Patterns provide the best way in which an object can be instantiated/created that can suit certain situations.

  1. Abstract Factory
  2. Builder
  3. Factory Method
  4. Prototype
  5. Singleton


Structural Patterns

Structural Patterns define the best ways to identify relationships between entities.

  1. Adapter
  2. Bridge
  3. Composite
  4. Decorator
  5. Facade
  6. Flyweight
  7. Proxy


Behavioral Patterns

Behavioral Patterns define the best ways to communicate between objects.

  1. Chain of Responsibility
  2. Command
  3. Interpreter
  4. Iterator
  5. Mediator
  6. Memento
  7. Observer
  8. State
  9. Strategy
  10. Template Method
  11. Visitor


That sums up 23 classic design patterns the I will try to pass through one by one to illustrate them in details and add that to my experience!

Please, read comment# 6

Your comments are highly appreciated!

  1. November 13, 2009 at 2:17 am

    good luck 🙂

  2. kazino
    December 14, 2009 at 11:24 pm

    Great idea, thanks for this tip!

    • Husain Al-Khamis
      December 15, 2009 at 11:48 am

      You are welcome!
      Are you into software development by somehow?


  3. February 28, 2010 at 7:42 am

    I applaud you for taking on such a venture. I recently had a similar idea, to blog about software design patterns, but I only planned to do as many as seemed fitting, not to commit to tackling all of them.

    I’ll be adding your blog to my blogroll.

    • Husain Al-Khamis
      February 28, 2010 at 2:40 pm


      You comment is very much appreciated, and thanks a lot for adding my blog to your blogroll and for being appreciative of the thoughts of others 😉

      Software Design Patterns are of high importance nowadays in order to deliver a high quality software. I see even those called programmers, who some of us see them as coders, should have some background about design patterns.

      Well, I stated that I will go through all the above Design Patterns, although I haven’t yet, but as you said I’m intending to start with what concerns me more and I can understand easily.

      Thanks again for your comment!


  4. Husain Al-Khamis
    March 16, 2010 at 9:09 pm

    To my blog readers,

    Thank you all very much for reading this post and for having your appreciated comments on what it conveys.

    As you’ve noticed that I mentioned I’ll go through these design patterns one by one. Well, according to my situation now, it won’t be possible for now. This is because I’m trying to go more practical than theoretical. Although, being practical requires you to understand the theoretical part.

    Explaining the design patterns one by one would be very time-consuming for me as I have top priority tasks for the aforementioned reason!

    Therefore, if you are more curious about every design pattern mentioned above, then refer to this great Reference Card summarizing them in a very well manner:

    design Patterns | DZone Refcards

    Again, Thank you all for stopping by.

    Best Regard

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: