Go To Nornote.com hear http://www.nornote.com
2007/Apr/09
2006/May/28
Strategy Pattern
| คำอธิบาย: เป็นการทำให้โปรแกรมที่เขียนขึ้นนั้นสามารถปรับเปลี่ยนแก้ไขพฤติกรรม (Behavior) ได้อย่างมีอิสระ โดยเฉพาะอย่างยิ่งในช่วงเวลาขณะที่โปรแกรมทำงานแล้ว (Run time) |
เราลองมาจินตนาการดูนะครับว่าเราจะเขียนโปรแกรมอย่างไรเพื่อให้โปรแกรมนั้นสามารถที่จะเปลี่ยนพฤติกรรมระหว่างที่กำลังทำงานอยู่ได้ ยกตัวอย่างเช่น ถ้าเราต้องการเขียนเกมขึ้นมาสักเกมหนึ่งเป็นเกมเลี้ยงสุนัข โดยในเกมนั้นจะมีสุนัขพันธ์ต่างๆอยู่หลายสายพันธ์ โดยแต่ละสายพันธ์ ก็จะมีเสียงเห่าที่แตกต่างกัน ถ้างั้นคุณลองออกแบบ Class Diagram ออกมานะครับว่าจะมีหน้าตาอย่างไร ให้ผมเดานะคุณคงออกแบบคลาสมาในลักษณะนี้แน่ๆเลย

แม่นไหมหละครับ อันที่จริงแล้วคลาสที่คุณออกแบบมานั้นไม่ผิดหรอกครับ แต่เผอิญว่าในเกมนั้นสุนัขดันเจ็บคออย่างหนัก เนื่องมาจากดันไปกินกระดูกควายเข้าให้ คราวนี้มันเห่าไม่ได้แล้วหละสิ อ้าวแล้วเราจะทำอย่างไรดีหละ เอ๊ะไม่ใช่แค่นั้นพอสุนัขแต่ละตัวเริ่มโตขึ้นมันก็มีเสียงเห่าที่เปลี่ยนไปคุณคงไม่ให้สุนัขที่รูปร่างใหญ่และดูน่าเกรงขามเห่าเสียงดัง "บ๊อก บ๊อก...." ตลอดไปหลอกนะครับอ้าวคราวนี้เรื่องใหญ่เลยแล้วเราจะไปเปลี่ยนเสียงเห่ามันยังไงดีหละ เอาหละครับถ้าคุณเจอสถานะการแบบนี้ให้รีบนึกถึง Strategy Pattern เลยครับเขาช่วยเราได้แน่ๆ โดยขั้นตอนการทำนั้นก็แสนจะง่ายครับมีหลักการดังนี้
1. Encapsulate group of behavior. ทำการรวมกลุ่มของพฤติกรรมออกเป็นกลุ่มๆ
2. Use Has-a to make them interchangeable. ใช้การมีคุณสมบัติของ Object แทนการสืบทอด
ฟังดูแล้วน่าสงสัยใช่ไหมครับว่าทำอย่างไร เราลองดู Class Diagram กันหน่อยว่าจะออกมาหน้าตาอย่างไร

นี่คือส่วนของโค้ด
// ส่วนของ performBark() ใน abstract class Dog |
อ้าวแล้วถ้าเกิดหมามันเปลี่ยนเสียงร้องจะทำไงดีหละ หุๆไม่ต้องตกใจเราก็แค่ทำอย่างนี้เอง
| .. // ทำการเปลี่ยนคุณสมบัติของเสียง doberman.setBarkBehavior(hong); // ทดสอบการส่งเสียง เสียงที่ออกมาจะเป็น hong hong... doberman.performBark(); .. |
เป็นไงหละครับง่ายหรือเปล่า Strategy Pattern ง่ายนิดเดียว
nornote
nornote@hotmail.com
2006/May/28
Designs Patterns
Design Patterns คือการนำหลักการเขียนโปรแกรมที่มีแบบแผนมาประยุกต์ใช้ในการแก้ปัญหาสถานะในการเขียนโปรแกรมในชีวิตจริงที่เรากำลังเผชิญอยู่
ในการเขียนโปรแกรมตามหลักของ OOP (Object Orianted Programming) เราจะมีการนำความรู้พื้นฐานซึ่งได้แก่ Abstraction, Encapsulation, Polymorphism, Inheritance มาประยุกต์เพื่อเขียนออกมาเป็นโปรแกรม ถึงแม้ว่าโปรแกรมนั้นจะทำงานได้อย่างสมบูรณ์ แต่เมื่อถึงเวลาหนึ่งเราจำเป็นที่จะต้องปรับปรุงแก้ไขโปรแกรมเหล่านั้น เช่น เพิ่มรูปแบบการทำงาน, เปลี่ยนรูปร่างหน้าตาการแสดงผล หรือแม้แต่เพียงแค่ทำการตัดฟังก์ชั่นการทำงานใดฟังก์ชั่นหนึ่งเท่านั้นเป็นไปได้ยาก ซึ่งสาเหตุหนึ่งมาจากเขียนโปรแกรมที่ไม่มีระเบียบแบบแผนที่ดี ดังนั้นจึงได้มีกลุ่มคนกลุ่มหนึ่งรู้จักกันในนาม the Gang of Four ซึ่งเป็นผู้ที่มีความเชี่ยวชาญด้านการออกแบบระบบได้ทำการสร้างรูปแบบการเขียนโปรแกมออกเป็นหลายแบบซึ่งแต่ระแบบนั้นสามารถนำมาประยุกต์ใช้ได้จริง และจะช่วยให้โปรแกรมที่พัฒนาขึ้นนั้นมีระเบียบแบบแผน สามารถที่จะปรับปรุงแก้ไขเพิ่มเติมในภายหลังได้อย่างง่ายดาย
ส่วนของเนื้อหาที่จะนำมาเขียนนั้นจะนำข้อมูลมาจากหนังสือ และจากข้อมูลการค้นคว้าทางอินเตอร์เน็ต รวมถึงประสบการณ์จากผู้เขียนเอง เพื่อให้ผู้อ่านเข้าใจง่ายผู้เขียนจะมีการยกตัวอย่างที่ใกล้เคียงกับชีวิตจริง ดังนั้นถ้าบทความมีการพาดพิงถึงบุคคลใดบุคคลหนึ่งก็ขออภัยมา ณ ที่นี้ด้วย
nornote
nornote@hotmail.com