Implementing a strategy pattern
It is often the case that runtime conditions force the developer to define several ways of doing the same thing. Traditionally, this involved a massive if/elseif/else
block of commands. You would then either have to define large blocks of logic inside the if
statement, or create a series of functions or methods to enable the different approaches. The strategy pattern attempts to formalize this process by having the primary class encapsulate a series of sub-classes that represent different approaches to solve the same problem.
How to do it...
In this illustration, we will use the
GetSet
hydrator class defined previously as a strategy. We will define a primaryApplication\Generic\Hydrator\Any
class, which will then consume strategy classes in theApplication\Generic\Hydrator\Strategy
namespace, includingGetSet
,PublicProps
, andExtending
.We first define class constants that reflect the built-in strategies that are available:
namespace Application\Generic\Hydrator...