7 02 2014
Introducing Design Patterns
As promised in my previous post about “Indexed Properties”, I will start to give you some insights into design patterns.
What are “Design Patterns”? To make it short: Design Patterns are universal (language independed) solutions for recurring problems in object-oriented software architecture and development.
In this post series we will limit to the common design patterns by the “Gang of Four”.
Design Patterns. Elements of Reusable Object-Oriented Software (ISBN: 0201633612)
For the german readers I can also recommend:
Patterns kompakt: Entwurfsmuster für effektive Software-Entwicklung (ISBN: 3642347177)
This page should also be interesting: .NET Design Patterns
There are different kinds of design patterns:
- Creational Design Patterns: For creating objects, e.g. Factory, Singleton, …
- Structural Design Patterns: For object composition and relation, e.g. Proxy, Facade, …
- Behavioral Design Patterns: For object behaviour and communication to other objects, e.g. Visitor, Observer, …
In further posts, we will go deeper into some design patterns like the “Visitor Pattern”.
Design patterns will help you to create a good quality of code. The other advantage is that they are “universal” so everyone who knows about design patterns will (hopefully) be able to understand your code faster. But not every design pattern is always useful. You must be careful, because the usage of design pattern may cause in “Over-Engineering” of your code. The other disadvantage could be, that some patterns require a closed object model and are not suitable to be implemented in “Core Libraries” (External DLLs) that offer inheritable objects. So keep in mind that the pattern must meet the needs of: time effort, maintainability, complexity, integration, etc.
In the following posts that are related to design patterns I will try to give you practical insights into selected patterns and I will also try to provide the UML-Diagrams, enough code samples and asides from my own experience. If you have questings or something else, please comment the specific post.
We will see again in the first post about the “Null Object Pattern” (Behavioral Design Pattern) 🙂