abstract class Template
{
public void DoTemplate()
{
if( GetSome())
{
DoSomething();
}
DoAnything();
}
protected boolean GetSome()
{
return true;
}
protected abstract void DoSomething();
protected abstract void DoAnything();
}
class CarEngine extends Template
{
@Override
protected void DoAnything()
{
// TODO Auto-generated method stub
System.out.println("CarEngine DoAnything");
}
@Override
protected void DoSomething()
{
// TODO Auto-generated method stub
System.out.println("CarEngine DoSomething");
}
}
class AirplaneEngine extends Template
{
@Override
protected void DoAnything()
{
// TODO Auto-generated method stub
System.out.println("AirplaneEngine DoAnything");
}
@Override
protected void DoSomething()
{
// TODO Auto-generated method stub
System.out.println("AirplaneEngine DoSomething");
}
protected boolean GetSome()
{
return false;
}
}
//---------------------------------------------------
class TemplateClient
{
public static void Client()
{
Template pCarEngine = new CarEngine();
pCarEngine.DoTemplate();
pCarEngine = null;
Template pAirplaneEngine = new AirplaneEngine();
pAirplaneEngine.DoTemplate();
pAirplaneEngine = null;
}
}