[Design Pattern]Template Method Pattern

พูดคุย, แนะนำเกร็ดความรู้สาระทั่วไป

Moderator: nat3

[Design Pattern]Template Method Pattern

Postby SoUL » Tue Jun 26, 2007 10:48 pm

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 ตัวอย่างอาจจะไม่สื่อเท่าไรแต่ตอนนี้ง่วงมากเลยไม่มีเวลาคิดตัวอย่างที่ทำให้เห็น
ประโยชน์มากกว่านี้แล้ว :(
ทำไมเรามานแก่ลงทุกวันเลย - -"
จะมีใครใคร ร๊ากกกคนหน้าตาอย่างช้านนนนนน
Image
User avatar
SoUL
Member
 
Posts: 977
Joined: Mon Jun 13, 2005 5:16 pm
Location: ที่ไหนสักที่

Postby nat3 » Tue Jun 26, 2007 10:59 pm

รอดู Strategy pattern อยู่นะเนี๊ยะ ชื่ออย่างเท่ อยากรู้หน้าตามันเป็นยังไง

ส่วน Abstract template method นี่ :? ไม่ค่อยแปลกใหม่แฮะ สงสัยเหมือน Facade ที่รู้ว่าใช้งานจริงเป็นไงแล้ว ก็รู้สึกว่ามันใช้ผ่านมาแล้วเพียงแต่ไม่ได้เรียกชื่อมันเท่านั้นเอง
User avatar
nat3
Moderators
 
Posts: 1229
Joined: Mon Jun 13, 2005 12:52 pm

Postby SoUL » Tue Jun 26, 2007 11:03 pm

ok ได้งั้นต่อไปเป็น Strategy pattern เลยละกัน
ทำไมเรามานแก่ลงทุกวันเลย - -"
จะมีใครใคร ร๊ากกกคนหน้าตาอย่างช้านนนนนน
Image
User avatar
SoUL
Member
 
Posts: 977
Joined: Mon Jun 13, 2005 5:16 pm
Location: ที่ไหนสักที่


Return to General Talk

Who is online

Users browsing this forum: No registered users and 2 guests

cron