A design pattern is a common solution to a common problem. Nothing more, nothing less. And, while some of these approaches might seem foreign or overwhelming to you, the important thing to remember is that, as a developer, you are in charge. That means you decide when a pattern is appropriate, and when it's completely unnecessary. That's the key.
A decorator allows us to dynamically extend the behavior of a particular object at runtime, without needing to resort to unnecessary inheritance. Let me give you a demonstration.
An adapter is one of the easier design patterns to learn. The reason why is because you use them in the real world all the time! In this lesson, let's review a handful of examples to figure out how it all works.
I bet you've used the template method design pattern on multiple occassions without even realizing it! This is an easy one to understand. Let's dig in.
Let's talk about the strategy design pattern and polymorphism. Like many patterns, you may find that you already use this one! You just didn't know that it had a name!
The chain of responsibility pattern is definitely an interesting one. It literally allows us to chain any number of objects, where each has the option of either handling a particular request, or deferring to the next object in the cycle.
Though certainly not for everything, you may find situations where the specification pattern can prove to be exactly what you need. In this lesson, we'll review the core concept, while using TDD and PHPUnit to drive our code.
In the previous lesson on the specification pattern, we reviewed the core fundamentals. However, we stopped just short of figuring out how to apply this concept to database queries. Let's figure that out, while, in the process, learning how to use (and test) Eloquent outside of Laravel.
The observer pattern is easily one of the most popular patterns in the bunch. And, luckily, it's one of the easier ones to comprehend. Let's review the essentials, while ultimately translating this new knowledge over to Laravel's implementation (in version 5).