วัตถุประสงค์ของการเขียนโปรแกรมด้วยรูปแบบ template method ซึ่งเป็นหนึ่งในชนิดของรูปแบบ behavioral คือ เพื่อรองรับความหลากหลายของวิธีการในการทำงานย่อย ในขณะที่โครงสร้างการทำงานหลักยังคงเดิม เช่น หากเราพูดถึงรถ รถแต่ละแบบจะมีองค์ประกอบที่เหมือนกัน แต่มีข้อปลีกย่อยบางอย่างที่แตกต่างออกไป เช่น อัตราเร่งของรถสปอร์ตจะเร็วกว่าระประหยัดพลังงาน เป็นต้น การใช้งานรูปแบบนี้พบได้ทั่วไปใน Java API
วิธีการคือเราจะประกาศคลาสแบบ abstarct เพื่ออธิบายลักษณะของออบเจกต์ที่เราต้องการ และสำหรับพฤติกรรมปลีกย่อยที่แตกต่างกันเราจะใช้เมธอดแบบ abstract ดังนั้นคลาสลูกแต่ละคลาสที่สืบทอดลงมาจะจะมีสถานะของออบเจกต์ที่เหมือนกัน แต่มีรายละเอียดของพฤติกรรมบางอย่างที่ต่างกันจากการโอเวอร์ไรด์เมธอด
ตัวอย่าง เช่น
abstract class Car {
int speed;
abstract void accerelate();
}
class EcoCar extends Car {
@Override
void accerelate() {
speed += 3;
}
}
class SuperCar extends Car {
@Override
void accerelate() {
speed += 50;
}
}
และในการใช้งานเราจะอ้างอิงตัวแปรด้วยคลาสหลักและสร้างออบเจกต์จากคลาสลูก
package com.company;
public class Main {
public static void main(String[] args) {
Car myEcoCar = new EcoCar();
Car mySuperCar = new SuperCar();
myEcoCar.accerelate();
mySuperCar.accerelate();
System.out.println("My eco car's speed = "+myEcoCar.speed);
System.out.println("My super car's speed = "+mySuperCar.speed);
}
}
My eco car's speed = 3
My super car's speed = 50