模板方法: 通过把不变的行为搬移到超类,去除子类中的重复代码来体现他的优势.很好的代码复用平台.
/** * @author stefanie zhao * @date 2014-8-15 下午03:05:31 */public abstract class AbstractClass { public abstract void primitiveOperation1(); public abstract void primitiveOperation2(); public void templateMethod() { primitiveOperation1(); primitiveOperation2(); }}
/** * @author stefanie zhao * @date 2014-8-15 下午03:06:57 */public class ConcreteClassA extends AbstractClass { /* * (non-Javadoc) * * @see us.echo.pattern.template.AbstractClass#primitiveOperation1() */ @Override public void primitiveOperation1() { System.out.println("concreteClass A op 1"); } /* * (non-Javadoc) * * @see us.echo.pattern.template.AbstractClass#primitiveOperation2() */ @Override public void primitiveOperation2() { System.out.println("concreteClass A op 2"); }}
/** * @author stefanie zhao * @date 2014-8-15 下午03:06:57 */public class ConcreteClassB extends AbstractClass { /* * (non-Javadoc) * * @see us.echo.pattern.template.AbstractClass#primitiveOperation1() */ @Override public void primitiveOperation1() { System.out.println("concreteClass B op 1"); } /* * (non-Javadoc) * * @see us.echo.pattern.template.AbstractClass#primitiveOperation2() */ @Override public void primitiveOperation2() { System.out.println("concreteClass B op 2"); }}
public class Main { /** * @Description: TODO * @param @param args * @return void * @throws */ public static void main(String[] args) { AbstractClass c = new ConcreteClassA(); c.templateMethod(); c = new ConcreteClassB(); c.templateMethod(); }}