class
ApplicationClass
{
AbstractWidget a;
AbstractWidget b;
// If C++ make this a virtual function
// and use pointers to ApplicationClass obj.
public AbstractWidget createWidget() {
return new
Widget();
}
public appMethod1() {
AbstractWidget d = createWidget();
d.widgetMethod1();
// . . .
AbstractWidget e = createWidget();
// . . .
}
// . . .
}
class
ApplicationClassB extends ApplicationClass
{
public AbstractWidget createWidget() {
return new WidgetB();
}
}
ApplicationClass test = new ApplicationClassB();
test.appMethod1();