这应该是插件还是组件解决方案? (的Joomla!)

Based on the diagram below, would this be better achieved by creating a plugin for the core registration component of Joomla (3.0) or would it be better to create a custom component?

I envision that it would still use the user database table for common elements, but two separate relational tables depending on the type of user (client/vendor)

Registration Map

Thank you in advance.

Based on the definitions below your addition is better describes as a component.

http://docs.joomla.org/Extension_types_(general_definitions)

Component

Components are the largest and most complex extensions of them all; they can be seen as mini-applications. Most components have two parts: a site part and an administrator part. Every time a Joomla page loads, one component is called to render the main page body. For example, Content (com_content) is the component which handles the display of content; users can view at the frontend of your site and, as an administrator, you can edit the content. Components are the major portion of your page because a component is driven by a menu item and every menu item runs a component.

Module

Modules are more lightweight and flexible extensions used for page rendering. These modules are mostly known as the “boxes” that are arranged around a component, for example: the login module. The footer is a module. Modules are assigned per menu item. So, you can decide to show or hide the logon module depending on which menu item the user is viewing. Sometimes modules are linked to components such as the “latest news” module which links to the com_content and displays links to the newest content items. However, modules do not need to be linked to components, as a matter of fact they don't even need to be linked to anything and can be just static HTML or text.

Plugin

Plugins are more advanced extensions and are in essence event handlers. In the execution of any part of Joomla, be it the core, a module or a component, an event can be triggered. When an event is triggered, plugins that are registered with the application to handle that event execute. For example, a plugin could be used to intercept user-submitted articles and filter out bad words.

I have to respectfully disagree with the other answer, this use case is practically the hallmark for creating a custom User plugin.

You could even use the existing #__user_profiles table to store any new data, replicate the entirety of your use case scope to registration, profile viewing/editing and back-end user management with just the one plugin.

  <?php
  defined('JPATH_BASE') or die;

  class plgUserCustomProfile extends JPlugin
  {

        function onContentPrepareData($context, $data) {
                //  This method loads all data for existing users
                //  By attaching variables to the $data object using the
                //  same naming convention as your form field definitions
                //  will facilitate automatic loading of values into forms
                return true;
        }

        function onContentPrepareForm($form, $data) {
            // This method allows you to attach custom forms to core user form
            // I usually have different forms for profile view, profile edit
            // registration and back-end administration depending on needs
        }

        function onUserAfterSave($data, $isNew, $result, $error) {
             // This method allows you to save edits to custom user fields
             return true;
        }

        function onUserAfterDelete($user, $success, $msg) {
             //  Here you get to delete all custom profile data when
             //  a user is deleted.
            return true;
        }


 }

The below link is a much more detailed explanation, but once built out; the control and flexibility it provides will make managing user profile data much easier.

http://docs.joomla.org/Creating_a_profile_plugin

Are you familiar with creating XML form definition files using Joomla methodology?

Are you implementing multi language support or Latisha definition files for your custom extensions?