When you know how to work with design patterns you gain access to years of experience of other developers.
Design patterns are in many ways the language that summarizes the advancement in developer thoughts. In many ways design patterns are the science of evolution in programming. By understanding how they work you gain the experience of millions of developers into your own projects.
Design patterns is the theory behind problem solving in programming. By knowing the different challenges developers face and commonly accepted solutions you elevate your personal capabilities to solve more advanced problems.
When you drive a car it does not mean you can't walk anymore but it means you can now drive a car(and go faster and longer distances). Knowing design patterns is moving into the drivers seat in programming enabling you to not solve every problem on your own but instead rely on existing theory that has been tested out 1000s, and sometimes millions, of times.
Solving problems is probably the most fun things you can do in life - and in programming. Solving problems is my personal meditation. Yet, if I tried to solve every problem without relying on pre-existing solutions the time I would need to spend on every project would make it impossible for me to create advanced projects (as I would always need to solve problems that take a lot of time - that have been solved many times before by others).
Your time is one of most valuable resource(and among the most expensive ones for corporations). If you solve every single problem without relying on common knowledge your time will be more expensive making you less profitable for the companies you work for. Imagine my time is worth $20 an hour, and I choose to solve a problem that million have solved already before - let's say it takes me about 100 hours to solve the problem - in other words just spent $2,000.
By working with a design pattern and advancing my skills to cut down the time it takes me to develop applications I increase the value of my time. In other words my hour just got more valuable to the companies I work for. Advanced developers make up to $500 an hour because they solve problems fast. While $500 an hour might sound like a lot, but if you can solve the same problem in 1 hour that someone else needs 100 – that actually makes your $500 an hour a bargain. Gain the wisdom of others, become a faster developer and ask for a raise.
...I am instantly writing code differently...
All the information is very useful and actionable.
...I'm glad I took the course.
The course opens by introducing the conceptual logic behind design patterns: what they are; what they are not; what makes a pattern; major pattern types; and what role they play in the bigger picture of Web development. We then dive straight into a real-world case study, building a mock application with in-built issues that design patterns can solve.
The course gives a strong explanation and practical application of the design patterns presented...
*this Isn't legally binding. Yet, imagine how relaxed you would be if you could tap into the wisdom of millions of developers that have confronted the same problems you are confronting now days – that's got to be good for the skin.
Style and approach
Ben Fhala discovered his passion for data visualization while he was working at Parsons in New York, in their data visualization department, PIIM. He is the owner of the online video training school, 02geek.com, and an Adobe ACP. He enjoys spending most of his time learning and teaching and has a love for visual programming and visualization in general. Ben has had the honor of developing applications for members of the US Congress, Prime Ministers, and Presidents around the world.
He has built many interactive experiences for companies such as Target, AT&T, Crayola, Marriott, Neutrogena, and Nokia. He has technically directed many award-winning projects and has been part of teams that have won three Agency of the Year awards. Among Ben's publications are Packt's HTML5 Graphing and Data Visualization Cookbook.
Over the past ten years Packt Publishing has developed an extensive catalogue of over 3000 books, e-books and video courses aimed at keeping IT professionals ahead of the technology curve. From new takes on established technologies through to the latest guides on emerging platforms, topics and trends – Packt's focus has always been on giving our customers the working knowledge they need to get the job done. Our courses continue this tradition, bringing you comprehensive yet concise screencast tutorials straight from the experts.
The nature of progress is to try to find the easy way out of problems. Developers as problem solvers aim to create solutions that can be reusable. Some solutions are so specific that their code can be transported from one project to the next (and in many ways that's one of the major benefits behind Object Oriented Programming).
Yet not every problem can be solved into tangible code that can be reused many times; these solutions are concepts that have been scrutinized by the community of developers for a common problem facing their work. As such, design patterns are not a finished solution that is easily transferable but instead are a template to solve a problem that is common in development.
Some problems are so common that they relate to many languages while other patterns are more specifically related to the language and type of interface and situation.
A secondary advantage of knowing and working with design patterns is they create a common vocabulary enabling you to describe a very complex problem many times in one word.
When developers speak in the same language it enables them to describe complex issues in one word. When you can describe a problem in a word or two you can more easily find solutions to problems. As such, building a common language among developers helps you develop better and gain the wisdom of the masses with little effort. In most scenarios, you will be able to find a solution to your problem with a quick search online (once you are armed with the name of the problem you are facing).
This common language enables more developers to scrutinize and test out the idea (find its problems and amend them) while documenting online possible solutions to these problems.
There are hundreds of different design patterns. Yet in general we can categorize most design patterns into three separate groups. These groups are: creational, structural and behavioral.
Creational patterns are the focus of our first cluster of design patterns that we cover in the second chapter. Creational design patterns are design patterns that relate to the creation of objects. In this section, we will explore the core creational design patterns and among them the Singleton, Factory, Abstract Factory, Builder, and Prototype design patterns.
While creational design patterns focus on one object at a time, strong world design patterns relate to the structure of your application holistically. Chapters 3 and 4 dive deep into the world of structural design patterns. The main objective of structural design patterns is to help communicate between different objects, by facilitating and enabling modular development. In other words, structural design patterns facilitate in connecting and replacing objects within an application.
While the two previous categories related to objects and the way they are positioned structurally within an application, behavioral design patterns focus on how objects communicate with each other and with that interface. The last chapter of this course is dedicated for behavioral design patterns. Behavioral design patterns focus on interactions between classes. In this section, we will only cover a handful of these types of design patterns, but there are many more of them.