class ApplicationClass {
AbstractWidget a;
AbstractWidget b;
AbstractWidget prototype;
public
ApplicationClass(AbstractWidget cloneMe ) {
prototype = cloneMe;
}
public
appMethod1() {
AbstractWidget d = prototype.clone();
d.widgetMethod1();
// . . .
AbstractWidget e = prototype.clone();
// . . .
}
// ...etc.
etc...
}
Elsewhere:
ApplicationClass test =
new ApplicationClass( new Widget() );
ApplicationClass testB =
new ApplicationClass( new WidgetB() );