From 19fff0aed9a3fe0f2b29ef699550459366b07bcb Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 22 Sep 2016 11:13:47 +0200 Subject: [PATCH] PHP7 TemplateMethod --- Behavioral/TemplateMethod/BeachJourney.php | 10 +- Behavioral/TemplateMethod/CityJourney.php | 15 +- Behavioral/TemplateMethod/Journey.php | 58 +- .../TemplateMethod/Tests/JourneyTest.php | 49 +- .../TemplateMethod/uml/TemplateMethod.uml | 70 +- Behavioral/TemplateMethod/uml/uml.png | Bin 8688 -> 46609 bytes Behavioral/TemplateMethod/uml/uml.svg | 892 +++++++++++++----- 7 files changed, 734 insertions(+), 360 deletions(-) diff --git a/Behavioral/TemplateMethod/BeachJourney.php b/Behavioral/TemplateMethod/BeachJourney.php index d19845c..5007054 100644 --- a/Behavioral/TemplateMethod/BeachJourney.php +++ b/Behavioral/TemplateMethod/BeachJourney.php @@ -2,16 +2,10 @@ namespace DesignPatterns\Behavioral\TemplateMethod; -/** - * BeachJourney is vacation at the beach. - */ class BeachJourney extends Journey { - /** - * prints what to do to enjoy your vacation. - */ - protected function enjoyVacation() + protected function enjoyVacation(): string { - echo "Swimming and sun-bathing\n"; + return "Swimming and sun-bathing"; } } diff --git a/Behavioral/TemplateMethod/CityJourney.php b/Behavioral/TemplateMethod/CityJourney.php index 3f36b61..f1f9335 100644 --- a/Behavioral/TemplateMethod/CityJourney.php +++ b/Behavioral/TemplateMethod/CityJourney.php @@ -2,16 +2,15 @@ namespace DesignPatterns\Behavioral\TemplateMethod; -/** - * CityJourney is a journey in a city. - */ class CityJourney extends Journey { - /** - * prints what to do in your journey to enjoy vacation. - */ - protected function enjoyVacation() + protected function enjoyVacation(): string { - echo "Eat, drink, take photos and sleep\n"; + return "Eat, drink, take photos and sleep"; + } + + protected function buyGift(): string + { + return "Buy a gift"; } } diff --git a/Behavioral/TemplateMethod/Journey.php b/Behavioral/TemplateMethod/Journey.php index c7a6809..0a1407c 100644 --- a/Behavioral/TemplateMethod/Journey.php +++ b/Behavioral/TemplateMethod/Journey.php @@ -4,6 +4,11 @@ namespace DesignPatterns\Behavioral\TemplateMethod; abstract class Journey { + /** + * @var string[] + */ + private $thingsToDo = []; + /** * This is the public service provided by this class and its subclasses. * Notice it is final to "freeze" the global behavior of algorithm. @@ -12,46 +17,49 @@ abstract class Journey */ final public function takeATrip() { - $this->buyAFlight(); - $this->takePlane(); - $this->enjoyVacation(); - $this->buyGift(); - $this->takePlane(); + $this->thingsToDo[] = $this->buyAFlight(); + $this->thingsToDo[] = $this->takePlane(); + $this->thingsToDo[] = $this->enjoyVacation(); + $buyGift = $this->buyGift(); + + if ($buyGift !== null) { + $this->thingsToDo[] = $buyGift; + } + + $this->thingsToDo[] = $this->takePlane(); } /** * This method must be implemented, this is the key-feature of this pattern. */ - abstract protected function enjoyVacation(); + abstract protected function enjoyVacation(): string; /** * This method is also part of the algorithm but it is optional. - * This is an "adapter" (do not confuse with the Adapter pattern, not related) - * You can override it only if you need to. + * You can override it only if you need to + * + * @return null|string */ protected function buyGift() { + return null; + } + + private function buyAFlight(): string + { + return 'Buy a flight ticket'; + } + + private function takePlane(): string + { + return 'Taking the plane'; } /** - * This method will be unknown by subclasses (better). + * @return string[] */ - private function buyAFlight() + public function getThingsToDo(): array { - echo "Buying a flight\n"; + return $this->thingsToDo; } - - /** - * Subclasses will get access to this method but cannot override it and - * compromise this algorithm (warning : cause of cyclic dependencies). - */ - final protected function takePlane() - { - echo "Taking the plane\n"; - } - - // A note regarding the keyword "final" : don't use it when you start coding : - // add it after you narrow and know exactly what change and what remain unchanged - // in this algorithm. - // [abstract] x [3 access] x [final] = 12 combinations, it can be hard ! } diff --git a/Behavioral/TemplateMethod/Tests/JourneyTest.php b/Behavioral/TemplateMethod/Tests/JourneyTest.php index 82acef3..26c1763 100644 --- a/Behavioral/TemplateMethod/Tests/JourneyTest.php +++ b/Behavioral/TemplateMethod/Tests/JourneyTest.php @@ -4,40 +4,33 @@ namespace DesignPatterns\Behavioral\TemplateMethod\Tests; use DesignPatterns\Behavioral\TemplateMethod; -/** - * JourneyTest tests all journeys. - */ class JourneyTest extends \PHPUnit_Framework_TestCase { - public function testBeach() + public function testCanGetOnVacationOnTheBeach() { - $journey = new TemplateMethod\BeachJourney(); - $this->expectOutputRegex('#sun-bathing#'); - $journey->takeATrip(); + $beachJourney = new TemplateMethod\BeachJourney(); + $beachJourney->takeATrip(); + + $this->assertEquals( + ['Buy a flight ticket', 'Taking the plane', 'Swimming and sun-bathing', 'Taking the plane'], + $beachJourney->getThingsToDo() + ); } - public function testCity() + public function testCanGetOnAJourneyToACity() { - $journey = new TemplateMethod\CityJourney(); - $this->expectOutputRegex('#drink#'); - $journey->takeATrip(); - } + $beachJourney = new TemplateMethod\CityJourney(); + $beachJourney->takeATrip(); - /** - * How to test an abstract template method with PHPUnit. - */ - public function testLasVegas() - { - $journey = $this->getMockForAbstractClass('DesignPatterns\Behavioral\TemplateMethod\Journey'); - $journey->expects($this->once()) - ->method('enjoyVacation') - ->will($this->returnCallback(array($this, 'mockUpVacation'))); - $this->expectOutputRegex('#Las Vegas#'); - $journey->takeATrip(); - } - - public function mockUpVacation() - { - echo "Fear and loathing in Las Vegas\n"; + $this->assertEquals( + [ + 'Buy a flight ticket', + 'Taking the plane', + 'Eat, drink, take photos and sleep', + 'Buy a gift', + 'Taking the plane' + ], + $beachJourney->getThingsToDo() + ); } } diff --git a/Behavioral/TemplateMethod/uml/TemplateMethod.uml b/Behavioral/TemplateMethod/uml/TemplateMethod.uml index 063b022..29d6c04 100644 --- a/Behavioral/TemplateMethod/uml/TemplateMethod.uml +++ b/Behavioral/TemplateMethod/uml/TemplateMethod.uml @@ -1,35 +1,35 @@ - - - PHP - \DesignPatterns\Behavioral\TemplateMethod\BeachJourney - - \DesignPatterns\Behavioral\TemplateMethod\CityJourney - \DesignPatterns\Behavioral\TemplateMethod\Journey - \DesignPatterns\Behavioral\TemplateMethod\BeachJourney - - - - - - - - - - - - - - - - - - - - Fields - Constants - Constructors - Methods - - private - - + + + PHP + \DesignPatterns\Behavioral\TemplateMethod\BeachJourney + + \DesignPatterns\Behavioral\TemplateMethod\BeachJourney + \DesignPatterns\Behavioral\TemplateMethod\Journey + \DesignPatterns\Behavioral\TemplateMethod\CityJourney + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/TemplateMethod/uml/uml.png b/Behavioral/TemplateMethod/uml/uml.png index c557e8fcdb831339cfab288323611835f0cac518..d8e9f6980600cc71d0c5704f2b61b1ced742b7b1 100644 GIT binary patch literal 46609 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 CCa9MH diff --git a/Behavioral/TemplateMethod/uml/uml.svg b/Behavioral/TemplateMethod/uml/uml.svg index d06adcb..6f7f555 100644 --- a/Behavioral/TemplateMethod/uml/uml.svg +++ b/Behavioral/TemplateMethod/uml/uml.svg @@ -1,256 +1,636 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - enjoyVacation() - - - - - - - - - - - - - CityJourney - - - CityJourney - - - - - - - - - - - - - - - - - - takeATrip() - - - - - - - - - enjoyVacation() - - - - - - - - - buyGift() - - - - - - - - - buyAFlight() - - - - - - - - - takePlane() - - - - - - - - - - - - - Journey - - - Journey - - - - - - - - - - - - - - - - - - enjoyVacation() - - - - - - - - - - - - - BeachJourney - - - BeachJourney - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enjoyVacation() + + + + + + + + + + + + + BeachJourney + + + BeachJourney + + + + + + + + + + + + + + + + + + + + + + enjoyVacation() + + + + + + + + + + + + + BeachJourney + + + BeachJourney + + + + + + + + + + + + + + + + + + + + + + + + + thingsToDo + + + + + + + + + + + + + + + + takeATrip() + + + + + + + + + + + + + enjoyVacation() + + + + + + + + + + + + + buyGift() + + + + + + + + + + + + + buyAFlight() + + + + + + + + + + + + + takePlane() + + + + + + + + + + + + + getThingsToDo() + + + + + + + + + + + + + Journey + + + Journey + + + + + + + + + + + + + + + + + + + + + + thingsToDo + + + + + + + + + + + + + + + + + + + + + + takeATrip() + + + + + + + + + + + + + + + + enjoyVacation() + + + + + + + + + + + + + + + + buyGift() + + + + + + + + + + + + + + + + buyAFlight() + + + + + + + + + + + + + + + + takePlane() + + + + + + + + + + + + + + + + getThingsToDo() + + + + + + + + + + + + + Journey + + + Journey + + + + + + + + + + + + + + + + + + + + + + enjoyVacation() + + + + + + + + + + + + + buyGift() + + + + + + + + + + + + + CityJourney + + + CityJourney + + + + + + + + + + + + + + + + + + + + + + enjoyVacation() + + + + + + + + + + + + + + + + buyGift() + + + + + + + + + + + + + CityJourney + + + CityJourney + + + + + + + + + + +