What Are Design Patterns?

14 June 2011

When I speak about design pattern here, I mean design pattern in software engineering and programming not in any other discipline. Historically programmers and designers faced some problems and gradually they found out that there are some problems, similar in characteristic and properties. Solution to one of these problems can be extended to solve other similar problems too. So solution to one problem can be reused to solve many other similar problems.

Well how can we use this idea efficiently? We should abstract the problems and extract the common properties of them and leave the unnecessary details out. Then we state the solution to this problem and document the problem and solution together. So a collection of these problems and solution is said design patterns (and solutions.) But not any problem is said to be a pattern. If the abstract characteristic of problem repeated several time, we say that it is a kind of pattern.

Design Patterns exist in the different levels of design from Code to Class diagram and grosser level like software architecture. In the world of Class diagram, e.g. there are 23 classic software design patterns like singleton, decoration, factory and etc. I may discuss some of these patterns later in some articles. Please check the article page and Google for the design pattern in Object Orientation if you'd like.