Well, second week, second post; so far so good!
I love programming and I love software architecture, and I think design patterns appeal to me because they are at the intersection of both of those disciplines.
Now, I’m under no illusion that this blog is the first to ever discuss design patterns, or that it’s going to cover new and uncharted ground on the topic anytime soon, but, that actually encourages me to build on what’s already out there, and try to share my own perspective on this topic.
When it comes to design patterns, there’s a lot of confusion out there, and I believe that the more varied the available lenses that one can see this topic through, the better.
There are some great books and resources available already, and some respected figures in the field, and I will be drawing on their insights heavily while sharing any useful references/resources I find for each post.
I do hope, however, to spend most of the time a bit closer to the practical than the theoretical, which is why the theme of this blog is “C# design patterns”.
The name already grounds the discussion in a practical approach, and my aim is to both instill an understanding of a particular design pattern, as well as discuss the C# mechanics that can be used to implement that pattern.
This focus on practical usage will hopefully encourage the average developer to tackle this topic without dismissing it as “interesting, but not useful for my day-to-day”.
Now, let me be clear here: I am not a C# design-patterns expert yet, but I am on a journey.
I am a firm believer in the idea that teaching is one of the best ways to learn, and since I want to learn practical design patterns well, what better way than use a blog as my medium, allowing me to share my journey with the widest audience possible!
>> So, what do you plan to write about?
First of all, I’m glad you asked.
Now, to answer your question, I think I’ll need to cover some common ground at first, and then dig into individual design patterns according to their importance or the frequency with which I encounter them.
You can expect me to start tackling the following areas in the coming few weeks:
- General
- A refresher on what design patterns are, and what they aren’t
- Why should you learn Design Patterns?
- Tools of the trade:
- C# language features which enable us to implement these patterns
- Object-oriented design common terminology
- UML class diagram syntax
- Design Patterns and SOLID principles
- Single Responsibility Principle
- Dependency Inversion Principle
- MVC pattern
- Repository pattern
- Unit of work pattern
- Proxy pattern
- Adapter pattern
- And much, much more…
If there’s a particular area that I’ve missed above that you’d like me to cover, please feel free to chime in with your comments below!
Till next time,