《设计模式系列》---模板方法

模板方法: 通过把不变的行为搬移到超类,去除子类中的重复代码来体现他的优势.很好的代码复用平台.

/**
 * @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();

    }

}


你可能感兴趣的:(java,设计模式,模板方法)