class ApplicationClass   {
   AbstractWidget a;
   AbstractCog b;
   AbstractFactory partFactory;
   
   public ApplicationClass(AbstractFactory aFactory)    
   {
      partFactory = aFactory;
   }
      
   public appMethod1()   
   {
      AbstractWidget d = partFactory.makeWidget();
      d.widgetMethod1();
      // ... 
      AbstractCog e = partFactory.makeCog();
   } // ....