title: Using a Static class as a collection/container of other objects
body: <p>I have a design question.  I'm working with a Coded UI test framework that someone wrote and I am maintaining.  I am convinced the way this is designed incorrectly but I thought I would get some other opinions.  It's basically a large static class whose sole purpose is to create and return other objects. </p>
  
  <p>Good/Bad...why?  I am lobbying to take on a pretty significant refactor and want to please my case convincingly to my manager.</p>
  
  <pre><code>public static class ParentClass
  {
      private static ChildClass1 childClass1;
      private static ChildClass2 childClass2;
      // 10+ more of the same
  
      // Properties
      public ChildClass1 ChildClass1
      {
          get 
          {
              if (childClass1 == null)
              {
                  childClass1 = new ChildClass1();
              }
              return childClass1;
          }
       }
  
      public ChildClass2 ChildClass2
      {
          get 
          {
              if (childClass2 == null)
              {
                  childClass2 = new ChildClass2();
              }
              return childClass2;
          }
      }
      // 10+ more of the same
  }
  
  
  
  [TestClass]
  public class TestClass1
  {
      [TestMethod]
      public void TestMethod1()
      {
          var x = ParentClass.ChildClass1.SomeMethod();
          Assert.IsNotNull(x);
      }
  
      [TestMethod]
      public void TestMethod2()
      {
          var x = ParentClass.ChildClass2.SomeMethod();
          Assert.IsNotNull(x);
      }
  
      // 10+ more of the same
  }
  </code></pre>