ใช่เพื่อทำให้เราสามารถกำหนดโครงสร้างการทำงานของ Method
ได้โดยกำหนดจาก Method ที่เรียกใช่ใน class แต่เราโยนหน้าที่ในการ implement method
ไปให้ class อื่น
Class Diagram
credit picture : http://www.dofactory.com
ตัวอย่าง code
- Code: Select all
abstract class AbstractTemplate {
final public run() {
method1();
method2();
method3();
}
abstract public method1();
abstract public method2();
public method3() {
System.out.println("I'm method3");
}
}
class ConcreteTemplate1 extends AbstractTemplate{
public method1() {
System.out.println("I'm method1 By ConcreteTemplate 1");
}
public method2() {
System.out.println("I'm method2 By ConcreteTemplate 1");
}
}
class ConcreteTemplate2 extends AbstractTemplate {
public method1() {
System.out.println("I'm method1 By ConcreteTemplate 2");
}
public method2() {
System.out.println("I'm method2 By ConcreteTemplate 2");
}
}
จะเห็นได้จาก code ว่าใน class ConcreteTemplete1,ConcreteTemplete2 ไม่จำเป็นจะต้อง
implement ใน ส่วนของ method run แล้ว method method3() เพราะเราได้สร้าง class Templete
แล้ว ทำให้เรา reduce code ที่เราจำเป็นจะต้องเขียนไปได้อีก ในส่วนของ method3 ที่เรา
จะ implement ใน class AbstractTemplete นั้นแนะนำให้เป็น method ที่คงที่ไม่เปลี่ยนแปลง
ยังมี tip อย่างอื่นอยู่แต่ตอนนี้ง่วงละเดวมาทำใหม่ ผิดถูกอารายพี่ๆในห้องช่วยเสริมด้วยนะครับ
ปล. code ตัวอย่างอาจจะไม่สื่อเท่าไรแต่ตอนนี้ง่วงมากเลยไม่มีเวลาคิดตัวอย่างที่ทำให้เห็น
ประโยชน์มากกว่านี้แล้ว