Page 1 of 1

[Design Pattern]Template Method Pattern

PostPosted: Tue Jun 26, 2007 10:48 pm
by SoUL
Tamplate Method Pattern

ใช่เพื่อทำให้เราสามารถกำหนดโครงสร้างการทำงานของ Method
ได้โดยกำหนดจาก Method ที่เรียกใช่ใน class แต่เราโยนหน้าที่ในการ implement method
ไปให้ class อื่น


Class Diagram

Image
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 ตัวอย่างอาจจะไม่สื่อเท่าไรแต่ตอนนี้ง่วงมากเลยไม่มีเวลาคิดตัวอย่างที่ทำให้เห็น
ประโยชน์มากกว่านี้แล้ว :(

PostPosted: Tue Jun 26, 2007 10:59 pm
by nat3
รอดู Strategy pattern อยู่นะเนี๊ยะ ชื่ออย่างเท่ อยากรู้หน้าตามันเป็นยังไง

ส่วน Abstract template method นี่ :? ไม่ค่อยแปลกใหม่แฮะ สงสัยเหมือน Facade ที่รู้ว่าใช้งานจริงเป็นไงแล้ว ก็รู้สึกว่ามันใช้ผ่านมาแล้วเพียงแต่ไม่ได้เรียกชื่อมันเท่านั้นเอง

PostPosted: Tue Jun 26, 2007 11:03 pm
by SoUL
ok ได้งั้นต่อไปเป็น Strategy pattern เลยละกัน