Strategy design pattern

The Strategy design pattern exists to allow us to alter the behavior of an object at runtime.

Let's suppose we have a class that will raise a number to a power, but at runtime we want to alter whether we square or cube a number.

Let's start off by defining an interface a function that will raise a number to a given power:

<?php 
 
interface Power 
{ 
  public function raise(int $number): int; 
} 

We can accordingly define classes to Square and also Cube a given number by implementing the interface.

Here's our Square class:

<?php 
 
class Square implements Power 
{ 
  public function raise(int $number): int 
  { 
    return pow($number, 2); 
  } 
} 

And let's define our Cube class:

<?php class Cube implements Power { public function raise(int $number): int ...

Get Mastering PHP Design Patterns now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.