I am Xano, @BartFeenstra, and http://mynameisbart.com.
Using Plugin type/manager, ID, and configuration through ConfigurablePluginInterface.
                        
<?php
/**
 * The plugin that handles Data response callbacks for REST resources.
 *
 * @ingroup views_display_plugins
 *
 * @ViewsDisplay(
 *   id = "rest_export",
 *   title = @Translation("REST export"),
 *   help = @Translation("Create a REST export resource."),
 *   uses_route = TRUE,
 *   admin = @Translation("REST export"),
 *   returns_response = TRUE
 * )
 */
class RestExport extends PathPluginBase implements ResponseDisplayPluginInterface {
    // Class contents here...
}
?>
                    
                    
                                        
system.admin:
  title: Administration
  route_name: system.admin
  weight: 9
  menu_name: admin
system.admin_content:
  title: Content
  description: 'Find and manage content.'
  route_name: system.admin_content
  parent: system.admin
  weight: -10
system.admin_structure:
  route_name: system.admin_structure
  parent: system.admin
  description: 'Administer blocks, content types, menus, etc.'
  title: Structure
  weight: -8
                    
                    
                One base plugin definition can be dynamically expanded into multiple derivative plugin definitions.
plugin.plugin_configuration.*.*
PluginDefinitionInterface
Review this presentation at http://slideshare.net/bartfeenstra.
Find the Plugin module at http://drupal.org/project/plugin.
I am Xano, @BartFeenstra, and http://mynameisbart.com.