Strategy Examples:

Java
Java
Python
Python
PHP
PHP
C#
C#
C++
C++
TypeScript
TypeScript
▸ Strategy Quick Review

Strategy Pattern in PHP

For this demo of the strategy pattern, we'll take the role of an up-and-coming trading firm looking to implement some algorithmic trading. To us, it's very important that we tune our trading strategy to the current market conditions in order to make the biggest profit in bull markets, while losing as little money as possible during bear markets.

   <?php

   interface iTradingStrategy
   {
       public function MakeTrades();
   }

   class RiskyTradingStrategy implements iTradingStrategy
   {
       public function MakeTrades()
       {
           echo "Making risky trades!";
       }
   }

   class ModerateTradingStrategy implements iTradingStrategy
   {
       public function MakeTrades()
       {
           echo "Making moderate trades.";
       }
   }

   class ConservativeTradingStrategy implements iTradingStrategy
   {
       public function MakeTrades()
       {
           echo "Making safe trades.";
       }
   }

   class TradingFirm
   {
       // Squirrel away the strategies:
       private $riskyStrategy;
       private $moderateStrategy;
       private $safeStrategy;

       private $currentStrategy;

       function __construct()
       {
           $this->riskyStrategy = new RiskyTradingStrategy();
           $this->moderateStrategy = new ModerateTradingStrategy();
           $this->safeStrategy = new ConservativeTradingStrategy();

           $this->currentStrategy = $this->moderateStrategy;
       }

       public function MarketUpdate($tradeConditions)
       {
           // Select the strategy based on market conditions:
           if($tradeConditions === "BearMarket")
           {
               $this->currentStrategy = $this->safeStrategy;
           }
           else if($tradeConditions  === "BullMarket")
           {
               $this->currentStrategy = $this->riskyStrategy;
           }
           else if($tradeConditions === "RecoveringMarket")
           {
               $this->currentStrategy = $this->moderateStrategy;
           }

           // Make trades with that strategy:
           $this->currentStrategy->MakeTrades();
       }
   }

Find any bugs in the code? let us know!