title: Does this match any known design pattern?
body: <p>I'm working on a simple, internal ASP.NET app for a small company.  I've designed the data access layer so it's database-agnostic.</p>
  
  <p>I have the following:</p>
  
  <ul>
  <li><strong>IDataHelper</strong> - An interface requiring
  methods such as FillDataTable(),
  ExecuteNonQuery(), etc.</li>
  <li><strong>MySqlHelper</strong> - Implements IDataHelper
  for MySQL, the only database I
  support so far.</li>
  <li><strong>Static data access classes</strong> -
  Encapsulate data access methods for
  different parts of the app.  They
  call methods on an IDataHelper to
  execute queries.</li>
  </ul>
  
  <p>And finally, I have a static class that creates an IDataHelper for the data access classes to call.  In the future it will create the appropriate helper based on the database       specified in the config file.  For now it's just hard-coded to create a MySqlHelper:</p>
  
  <pre><code>public static class DataHelperContainer
  {
      private static IDataHelper dataHelper;
  
      public static IDataHelper DataHelper
      {
          get { return dataHelper; }
      }
  
      static DataHelperContainer()
      {
          string connectionString = ConfigurationManager
              .ConnectionStrings["myapp"].ConnectionString;
  
          // Support for other databases will be added later.
          dataHelper = new MySqlHelper(connectionString);
      }  
  }
  </code></pre>
  
  <p>My questions are:</p>
  
  <ol>
  <li>What should I name this? 
  "DataHelperContainer" doesn't seem
  right, since that implies some kind
  of list.</li>
  <li>Is this a good or bad design?  If
  it's bad, what are its faults?</li>
  <li>Is this similar to any known design
  pattern?  Can it be refactored to
  conform to one?  It seems remotely
  like a factory, but I'm not sure.</li>
  </ol>
  
  <p>Sorry about the long post and multiple questions.  :)</p>
  
  <p>Thanks!</p>