Decouple an abstraction from its implementation so that the two can vary independently.
You can also find these code on GitHub
Workshop.php
Workshop.php
Assemble.php
Assemble.php
Produce.php
Produce.php
Vehicle.php
Vehicle.php
Motorcycle.php
Motorcycle.php
Car.php
Car.php
Tests/BridgeTest.php
Tests/BridgeTest.php