- Context
- Strategy
- Concrete Strategy
To separate strategies and to enable fast switching between them. Also this pattern is a good alternative to inheritance (instead of having an abstract class that is extended).
- sorting a list of objects, one strategy by date, the other by id
- simplify unit testing: e.g. switching between file and in-memory storage
You can also find this code on GitHub
Context.php
Context.php
Comparator.php
Comparator.php
DateComparator.php
DateComparator.php
IdComparator.php
IdComparator.php
Tests/StrategyTest.php
Tests/StrategyTest.php