state,strategy,templatemethod,visitor