Builder Pattern ใน Java
วันนี้เรามารู้จักกับ Builder Pattern กัน โดยเราจะใช้ Java เป็นตัวอย่างประกอบ เจ้า Design Pattern นี้ใช้สำหรับประยุกต์กับการสร้างออบเจกต์ Model หรือ Entity โดยเฉพาะครับ ว่าแล้วไปดูกันเลย
แนวคิดการเขียนโปรแกรมแบบ Oriented ต่างๆ
ระหว่างที่ผมกำลังเขียนหนังสือเล่มใหม่ ซึ่งได้มีการพูดถึงแนวคิดแบบ Component-oriented Architecture ก็ได้ฉุกคิดขึ้นมาว่า คงมีหลายๆคนที่สับสนกับแนวคิด Oriented แบบต่างๆ และมีข้อสงสัยเช่น Object-oriented Programming ต่างจาก Component-oriented Architecture อย่างไร เราควรใช้แบบไหนดี แล้ว Service-oriented Architecture หล่ะมันคืออะไร เป็นต้น ไหนจะตีกับเรื่องของ Design Patterns แบบต่างๆอีก ดังนั้นผมจึงตั้งใจเขียนบทความนี้ขึ้นมาเพื่ออธิบายความสัมพันธ์ของแนวคิดดังต่อไปนี้คือ
- Object-oriented Programming (OOP)
- Component-oriented Architecture (COA)
- Service-oriented Architecture (SOA)
ว่าแล้วก็ไปอ่านกันเลยครับ
Polymorphism คืออะไร
หลังจากที่เราได้รู้จักกับ Encapsulation และ Inheritance ไปในบทความ "Encapsulation คืออะไร" และ "Inheritance คืออะไร" ที่ผ่านมา บทความนี้ผมจะมาพูดเรื่อง Polymorphism ซึ่งเป็นฟีเจอร์ที่สำคัญมากของภาษาแบบออกเจกต์ (OOP) เพราะมันช่วยทำให้ระบบมีความยืดหยุ่นสูง อีกทั้ง Design Patterns หลายๆตัวก็ต้องพึ่งพาฟีเจอร์ทางภาษานี้ อย่างไรก็ตามเรื่องนี้เป็นเรื่องที่ค่อนข้างเข้าใจได้ยาก โดยเฉพาะกับผู้เริ่มต้นเรียนรู้ เพราะมักจะนึกภาพไม่ออกว่าจะนำมันไปประยุกต์ใช้อย่างไร ใช้แล้วได้อะไร ดังนั้นบทความนี้ผมจะเริ่มต้นจากตัวอย่างง่ายๆไปจนกระทั่งตัวอย่างจริงที่จับต้องได้ครับ
(หากใครยังไม่ได้อ่านบทความ "Inheritance คืออะไร" แนะนำให้ไปอ่านก่อนนะครับ เพราะใช้ตัวอย่างต่อเนื่องจากบทความนั้น)
Inheritance คืออะไร
บทความนี้เป็นบทความภาคต่อเกี่ยวกับ "ฟีเจอร์ของภาษาออบเจกต์" โดยในบทความที่แล้ว ("Encapsulation คืออะไร") ผมได้พูดถึงเรื่องของ Encapsulation ไป ในบทความนี้ผมจะมาพูดถึงฟีเจอร์ทางภาษาที่ชื่อว่า Inheritance พร้อมทั้งยกตัวอย่างด้วย Java เหมือนเช่นเคย เรื่องนี้เป็นเรื่องที่เข้าใจได้ง่ายกว่า Encapsulation และ Polymorphism นะครับ ตรงๆตัวไม่ได้ซับซ้อนอะไร จากการที่สอบถามหลายๆคนก็มักจะได้คำตอบว่าเข้าใจ ถามว่าแปลว่าอะไรก็ตอบได้เช่นกัน พอมันแปลได้แล้วความหมายมันใกล้เคียงกับสิ่งที่เราเรียน เราก็มักจะเข้าใจและจำได้ ถ้าเช่นนั้นคุณก็ลองตอบคำถามในใจก่อนอ่านนะว่า มันแปลว่าอะไรแล้วน่าจะเกี่ยวกับอะไรในการเขียนโปรแกรม ถ้าได้คำตอบแล้วก็ไปลุยกันเลย ดูว่ามันจะเหมือนกับที่คิดไว้หรือไม่
Encapsulation คืออะไร
เวลาเราเรียน OOP ไม่ว่าจะเป็นหลักสูตร Programming ผ่านภาษาต่างๆ หรือหลักสูตรที่มุ่งเน้นเพียงแค่แนวคิดและการออกแบบ เรามักจะได้ยินชื่อหัวเรื่องเท่ๆหรูๆดังต่อไปนี้ Encapsulation, Inheritance, และ Polymorphism ใช่ครับมันคือฟีเจอร์ทางภาษาของภาษาแบบออบเจกต์ ซึ่งถ้าเรานำมันมาใช้อย่างถูกต้อง ระบบจะมีความยืดหยุ่นสูง อย่างไรก็ตามมีผู้คนจำนวนมากที่ยังไม่เข้าใจว่าฟีเจอร์เหล่านี้คืออะไร ทำงานอย่างไร เราจะใช้มันเมื่อไหร่ แล้วเราจะได้อะไรจากมันมา ดังนั้นในบทความนี้ผมจะมาพูดถึงฟีเจอร์เหล่านี้ โดยจะเริ่มต้นที่ Encapsulation พร้อมทั้งยกตัวอย่างประกอบด้วย Java ส่วนฟีเจอร์อื่นๆนั้นจะเขียนในบทความถัดๆไป (หากคุณยังไม่เข้าใจว่า OOP คืออะไร ผมแนะนำให้ไปอ่านบทความ Object-Oriented Programming (OOP) คืออะไรกันแน่? และ Objects คืออะไร? เสียก่อนครับ)