--- /dev/null
+<?php
+
+namespace Drupal\Core\Routing;
+
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Symfony\Component\Routing\RouteCollection;
+
+/**
+ * Provides a base implementation for RouteSubscriber.
+ */
+abstract class RouteSubscriberBase implements EventSubscriberInterface {
+
+ /**
+ * Alters existing routes for a specific collection.
+ *
+ * @param \Symfony\Component\Routing\RouteCollection $collection
+ * The route collection for adding routes.
+ */
+ abstract protected function alterRoutes(RouteCollection $collection);
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function getSubscribedEvents() {
+ $events[RoutingEvents::ALTER] = 'onAlterRoutes';
+ return $events;
+ }
+
+ /**
+ * Delegates the route altering to self::alterRoutes().
+ *
+ * @param \Drupal\Core\Routing\RouteBuildEvent $event
+ * The route build event.
+ */
+ public function onAlterRoutes(RouteBuildEvent $event) {
+ $collection = $event->getRouteCollection();
+ $this->alterRoutes($collection);
+ }
+
+}