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();
} // ....