From 72f32359c6076621b156b166f8a2bbf4563e1c74 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 22 Sep 2016 20:33:24 +0200 Subject: [PATCH] PHP7 Bridge --- Structural/Bridge/Assemble.php | 11 - Structural/Bridge/Car.php | 21 - Structural/Bridge/FormatterInterface.php | 8 + Structural/Bridge/HelloWorldService.php | 11 + Structural/Bridge/HtmlFormatter.php | 11 + Structural/Bridge/Motorcycle.php | 21 - Structural/Bridge/PlainTextFormatter.php | 11 + Structural/Bridge/Produce.php | 14 - Structural/Bridge/README.rst | 26 +- Structural/Bridge/Service.php | 29 + Structural/Bridge/Tests/BridgeTest.php | 23 +- Structural/Bridge/Vehicle.php | 20 - Structural/Bridge/Workshop.php | 11 - Structural/Bridge/uml/Bridge.uml | 90 +- Structural/Bridge/uml/uml.png | Bin 16163 -> 40921 bytes Structural/Bridge/uml/uml.svg | 1112 +++++++++++++--------- 16 files changed, 790 insertions(+), 629 deletions(-) delete mode 100644 Structural/Bridge/Assemble.php delete mode 100644 Structural/Bridge/Car.php create mode 100644 Structural/Bridge/FormatterInterface.php create mode 100644 Structural/Bridge/HelloWorldService.php create mode 100644 Structural/Bridge/HtmlFormatter.php delete mode 100644 Structural/Bridge/Motorcycle.php create mode 100644 Structural/Bridge/PlainTextFormatter.php delete mode 100644 Structural/Bridge/Produce.php create mode 100644 Structural/Bridge/Service.php delete mode 100644 Structural/Bridge/Vehicle.php delete mode 100644 Structural/Bridge/Workshop.php diff --git a/Structural/Bridge/Assemble.php b/Structural/Bridge/Assemble.php deleted file mode 100644 index 9b9d114..0000000 --- a/Structural/Bridge/Assemble.php +++ /dev/null @@ -1,11 +0,0 @@ -workShop1->work(); - $this->workShop2->work(); - } -} diff --git a/Structural/Bridge/FormatterInterface.php b/Structural/Bridge/FormatterInterface.php new file mode 100644 index 0000000..d59a344 --- /dev/null +++ b/Structural/Bridge/FormatterInterface.php @@ -0,0 +1,8 @@ +implementation->format('Hello World'); + } +} diff --git a/Structural/Bridge/HtmlFormatter.php b/Structural/Bridge/HtmlFormatter.php new file mode 100644 index 0000000..79e49b5 --- /dev/null +++ b/Structural/Bridge/HtmlFormatter.php @@ -0,0 +1,11 @@ +%s

', $text); + } +} diff --git a/Structural/Bridge/Motorcycle.php b/Structural/Bridge/Motorcycle.php deleted file mode 100644 index f008785..0000000 --- a/Structural/Bridge/Motorcycle.php +++ /dev/null @@ -1,21 +0,0 @@ -workShop1->work(); - $this->workShop2->work(); - } -} diff --git a/Structural/Bridge/PlainTextFormatter.php b/Structural/Bridge/PlainTextFormatter.php new file mode 100644 index 0000000..af46283 --- /dev/null +++ b/Structural/Bridge/PlainTextFormatter.php @@ -0,0 +1,11 @@ +implementation = $printer; + } + + /** + * @param FormatterInterface $printer + */ + public function setImplementation(FormatterInterface $printer) + { + $this->implementation = $printer; + } + + abstract public function get(); +} diff --git a/Structural/Bridge/Tests/BridgeTest.php b/Structural/Bridge/Tests/BridgeTest.php index 0a89a86..2f70e87 100644 --- a/Structural/Bridge/Tests/BridgeTest.php +++ b/Structural/Bridge/Tests/BridgeTest.php @@ -2,24 +2,19 @@ namespace DesignPatterns\Structural\Bridge\Tests; -use DesignPatterns\Structural\Bridge\Assemble; -use DesignPatterns\Structural\Bridge\Car; -use DesignPatterns\Structural\Bridge\Motorcycle; -use DesignPatterns\Structural\Bridge\Produce; +use DesignPatterns\Structural\Bridge\HelloWorldService; +use DesignPatterns\Structural\Bridge\HtmlFormatter; +use DesignPatterns\Structural\Bridge\PlainTextFormatter; class BridgeTest extends \PHPUnit_Framework_TestCase { - public function testCar() + public function testCanPrintUsingThePlainTextPrinter() { - $vehicle = new Car(new Produce(), new Assemble()); - $this->expectOutputString('Car Produced Assembled'); - $vehicle->manufacture(); - } + $service = new HelloWorldService(new PlainTextFormatter()); + $this->assertEquals('Hello World', $service->get()); - public function testMotorcycle() - { - $vehicle = new Motorcycle(new Produce(), new Assemble()); - $this->expectOutputString('Motorcycle Produced Assembled'); - $vehicle->manufacture(); + // now change the implemenation and use the HtmlFormatter instead + $service->setImplementation(new HtmlFormatter()); + $this->assertEquals('

Hello World

', $service->get()); } } diff --git a/Structural/Bridge/Vehicle.php b/Structural/Bridge/Vehicle.php deleted file mode 100644 index 80311e1..0000000 --- a/Structural/Bridge/Vehicle.php +++ /dev/null @@ -1,20 +0,0 @@ -workShop1 = $workShop1; - $this->workShop2 = $workShop2; - } - - abstract public function manufacture(); -} diff --git a/Structural/Bridge/Workshop.php b/Structural/Bridge/Workshop.php deleted file mode 100644 index 9cb26c5..0000000 --- a/Structural/Bridge/Workshop.php +++ /dev/null @@ -1,11 +0,0 @@ - - - PHP - \DesignPatterns\Structural\Bridge\Vehicle - - \DesignPatterns\Structural\Bridge\Workshop - \DesignPatterns\Structural\Bridge\Car - \DesignPatterns\Structural\Bridge\Produce - \DesignPatterns\Structural\Bridge\Motorcycle - \DesignPatterns\Structural\Bridge\Assemble - \DesignPatterns\Structural\Bridge\Vehicle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Fields - Constants - Constructors - Methods - - private - - + + + PHP + \DesignPatterns\Structural\Bridge\HtmlFormatter + + \DesignPatterns\Structural\Bridge\PlainTextFormatter + \DesignPatterns\Structural\Bridge\FormatterInterface + \DesignPatterns\Structural\Bridge\Service + \DesignPatterns\Structural\Bridge\HelloWorldService + \DesignPatterns\Structural\Bridge\HtmlFormatter + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Methods + + private + + diff --git a/Structural/Bridge/uml/uml.png b/Structural/Bridge/uml/uml.png index df6ce3c32fe9a9a284c5122596bfaf1389ee9da9..6de5b02756e43c3569bed03ae7ae5b6f8153d469 100644 GIT binary patch literal 40921 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 YyyS!6%`T@Zpf!eqjEZ!z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - work() - - - - - - - - - - - - - Workshop - - - Workshop - - - - - - - - - - - - - - - - - - - __construct(workShop1, workShop2) - - - - - - - - - - - - - manufacture() - - - - - - - - - - - - - Car - - - Car - - - - - - - - - - - - - - - - - - - work() - - - - - - - - - - - - - Produce - - - Produce - - - - - - - - - - - - - - - - - - - __construct(workShop1, workShop2) - - - - - - - - - - - - - manufacture() - - - - - - - - - - - - - Motorcycle - - - Motorcycle - - - - - - - - - - - - - - - - - - - work() - - - - - - - - - - - - - Assemble - - - Assemble - - - - - - - - - - - - - - - - - - - workShop1 - - - - - - - - - - workShop2 - - - - - - - - - - - - - __construct(workShop1, workShop2) - - - - - - - - - - - - - manufacture() - - - - - - - - - - - - - Vehicle - - - Vehicle - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + format(text) + + + + + + + + + + + + + PlainTextFormatter + + + PlainTextFormatter + + + + + + + + + + + + + + + + + + + + + + format(text) + + + + + + + + + + + + + PlainTextFormatter + + + PlainTextFormatter + + + + + + + + + + + + + + + + + + + + + + format(text) + + + + + + + + + + + + + FormatterInterface + + + FormatterInterface + + + + + + + + + + + + + + + + + + + + + + format(text) + + + + + + + + + + + + + FormatterInterface + + + FormatterInterface + + + + + + + + + + + + + + + + + + + + + + + + + implementation + + + + + + + + + + + + + + + + setImplementation(printer) + + + + + + + + + + + + + get() + + + + + + + + + + + + + Service + + + Service + + + + + + + + + + + + + + + + + + + + + + implementation + + + + + + + + + + + + + + + + + + + setImplementation(printer) + + + + + + + + + + + + + + + + get() + + + + + + + + + + + + + Service + + + Service + + + + + + + + + + + + + + + + + + + + + + get() + + + + + + + + + + + + + HelloWorldService + + + HelloWorldService + + + + + + + + + + + + + + + + + + + + + + get() + + + + + + + + + + + + + HelloWorldService + + + HelloWorldService + + + + + + + + + + + + + + + + + + + + + + format(text) + + + + + + + + + + + + + HtmlFormatter + + + HtmlFormatter + + + + + + + + + + + + + + + + + + + + + + format(text) + + + + + + + + + + + + + HtmlFormatter + + + HtmlFormatter + + + + + + + + + + + + +