Software Design Patterns


Congratulations! You are venturing into design patterns. Why am I congratulating you? To venture here and begin to understand design patterns you need to know the basics of at least one programming language, the basics of OO programming and a few design principles. It means that you are not a beginner programmer. Design patterns are built on top of design principles. So first, we’ll discuss what a design principle is.

Design Principle

What is a design principle? These are like guides for us when we are building software. For example, one design principle is to always name your identifiers with descriptive clear and understandable names.

Design Pattern

For information on design patterns try https://www.dofactory.com/ and https://www.dofactory.com/net/design-patterns

Design patterns are high-level abstract solution templates. Think of them as blueprints for solutions rather than the solutions themselves. you will typically arrive at design patterns through refactoring your code and generalizing your problem.

A set of the most common patterns were cataloged in a book entitled Design Patterns: Elements of Reusable Object-Oriented Software, more affectionately known as the Design Patterns Bible. This book was written by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, better known as the Gang of Four (GoF). They collected 23 design patterns and organized them into 3 groups.

Most Important Design Patterns

Here is a list of some of the most important design patters.

  1. Observer
  2. Factory Method
  3. Decorator
  4. Singleton
  5. Command
  6. Strategy
  7. Adapter
  8. Facade
  9. Template Method
  10. Chain of Responsibility
  11. State Pattern
  12. Prototype
  13. Builder

Learn from YouTube

Get started with design patterns by Googling and watching YouTube videos. Mosh Hamedani has an introductoy YouTube video on design patterns called Design Patterns in Plain English | Mosh Hamedani. Mosh programs in Java using the IntelliJ IDE. If you don’t know Java don’t worry about it. As long as you know some programming language and are familiar with object-oriented principles you can learn from this video.

If you are wanting to read a book on the topic there are two books I would suggest. If you are new to design patterns then have a look at our post called Head First Design Patterns. If you need a reference book, have a look at Design Patterns: Elements of Reusable Object-Oriented Software.