Java23种设计模式之-----模板方法模式

一、什么是模板方法模式?
Template Method模式也叫模板方法模式,是行为模式之一,它把句有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。
二、模板方法模式的应用场景
Template Method模式一般应用在具有以下条件的应用中:
(1)、具有统一的操作步骤或操作过程
(2)、具有不同的操作细节
(3)、存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同
三、代码举例演示
(1)、创建抽象类MakeCar

package com.renxin.templatemethod;
/**
 * 组装车
 * @author Administrator
 *
 */
public abstract class MakeCar {

    //组装车头
    public abstract void makeHead();
    //组装车身
    public abstract void makeBody();
    //组装车尾
    public abstract void makeTail();
}

(2)、创建MakeBus并且继承MakeCar

package com.renxin.templatemethod;

public class MakeBus extends MakeCar {

    public void makeHead() {
        System.out.println("bus:组装车头");
    }


    public void makeBody() {
        System.out.println("bus:组装车身");

    }


    public void makeTail() {
        System.out.println("bus:组装车尾");
    }

}

(3)、创建测试类MainClass

package com.renxin.templatemethod;

public class MainClass {
    public static void main(String[] args) {
        MakeCar bus = new MakeBus();
        bus.makeHead();
        bus.makeBody();
        bus.makeTail();

    }
}

控制台输出结果为:

bus:组装车头
bus:组装车身
bus:组装车尾

(4)、创建MakeJeep并且继承MakeCar


package com.renxin.templatemethod;

public class MakeJeep extends MakeCar {

    public void makeHead() {
        System.out.println("Jeep:组装车头");
    }

    public void makeBody() {
        System.out.println("Jeep:组装车身");
    }

    public void makeTail() {
        System.out.println("Jeep:组装车尾");
    }

}

(5)、修改测试MainClass

package com.renxin.templatemethod;

public class MainClass {
    public static void main(String[] args) {
        MakeCar bus = new MakeBus();
        bus.makeHead();
        bus.makeBody();
        bus.makeTail();
        System.out.println("==========");

        MakeCar Jeep = new MakeJeep();
        Jeep.makeHead();
        Jeep.makeBody();
        Jeep.makeTail();
    }
}

控制台打印结果为

bus:组装车头
bus:组装车身
bus:组装车尾
==========
Jeep:组装车头
Jeep:组装车身
Jeep:组装车尾

四、模板方法模式的结构
Java23种设计模式之-----模板方法模式_第1张图片
代码演示模板方法:
(1)、修改抽象类MakeCar

package com.renxin.templatemethod;
/**
 * 组装车
 * @author Administrator
 *
 */
public abstract class MakeCar {

    //组装车头
    public abstract void makeHead();
    //组装车身
    public abstract void makeBody();
    //组装车尾
    public abstract void makeTail();

    //模板方法
    public void make() {
        this.makeHead();
        this.makeBody();
        this.makeTail();
    }
}

(2)、修改测试类MainClass

package com.renxin.templatemethod;

public class MainClass {
    public static void main(String[] args) {
        MakeCar bus = new MakeBus();
        /*bus.makeHead();
        bus.makeBody();
        bus.makeTail();*/

        bus.make();

        System.out.println("==========");

        MakeCar Jeep = new MakeJeep();
        /*Jeep.makeHead();
        Jeep.makeBody();
        Jeep.makeTail();*/
        Jeep.make();
    }
}

五、模板方法模式的角色和职责
(1)、AbstractClass:抽象类的父类
(2)、ConcreteClass:具体的实现子类
(3)、TemplateMethod():模板方法
(4)、method1()与method2():具体步骤方法

你可能感兴趣的:(Java23种设计模式)