The Holy Grail of programming is to solve a problem once and make continual reuse of that solution forevermore. And, yet, despite my best efforts I find that I am often reworking familiar problems. So GoF design patterns aside, there have been several times that I've designed calendaring, content management, and person/organization address books to name only a few.
I'd like to know if there are any good resources (books, websites, whatever) where I could peruse common high-level business designs. I do realize that the requirements between my project and any pattern I might discover will differ, but I do expect the heart of the matter would remain the same, that there would be a lot of hard-won experience from which to draw. Plus, as geekish as this is, I simply enjoy reading about the process and the rationale behind the decisions from which designs emerge. I love it when shops, startups, and coders are transparent about their designs. (e.g. 37Signals, Garret Dimon)
This post touches on the subject and calls these high-level design patterns "Functional Design Patterns", but I'm not sure that's the common term used for what I'm describing. A search on "Functional Design Patterns" didn't turn up much. I also searched on "Domain-Specific Design Patterns" and "Data Model Design Patterns", the latter provided an interesting result so maybe this is more on target. By what term do you know what I'm trying to describe? Any good resources? Any other shops/coders who transparently showcase their emerging designs?
One of the most popular design patterns used by software developers is a factory method. It is a creational pattern that helps create an object without the user getting exposed to creational logic. The only problem with a factory method is it relies on the concrete component.
Quick answer: yes. Especially when you're at the beginning of your journey, design patterns are a good starting point. Even if you won't use them right away in your first projects, getting to know them will help you understand the existing solutions you're using. Complex solutions are made of patterns.
Three Types of Design Patterns (Behavioral, Creational, Structural) Distinguish between Behavioral, Creational, and Structural Design Patterns.
If you haven't heard of the Hillside Group, the Pattern Languages of Programs events, or the books that have come out of this effort, I would start there. I have been nothing but happy about this effort.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With