🏆 Abstraction & Encapsulation

หลังจากที่เข้าใจหลักการของ Abstraction กับ Encapsulation กันไปเรียบร้อยแล้ว ดังนั้นเรามาสรุปความเข้าใจเจ้า 2 ตัวนี้ก่อนว่ามันเกี่ยวเนื่องกันยังไง

🔥 Abstraction

เป็นการแปลงโจทย์ให้เป็น Models เพื่อให้เราเอาไปเขียนโค้ดต่อ

🔥 Encapsulation

เป็นการ ควบคุมสิทธิ์ และทำให้ของต่างๆทำงานร่วมกัน

https://www.scientecheasy.com/2018/06/encapsulation-in-java-real-time-examples-advantages.html

💖 Abstraction + Encapsulation

เมื่อเราเอาทั้ง 2 แนวคิดนี้มารวมกัน เราจะได้ Models ที่มีการควบคุมสิทธิ์ในการเข้าใช้งาน นั่นเอง ซึ่งประโยชน์ที่เราจะได้ก็คือ Model ของเราจะเป็น Component ที่สามารถเอาไปใช้งานได้ โดยที่คนอื่นไม่จำเป็นต้องสนใจเลยว่าจริงๆมันทำงานยังไง ยกตัวอย่างเช่น ทีวี

iconarchive.com

เมื่อไหร่ก็ตามที่เราอยากดูทีวี เราก็แค่เดินมากดปุ่มเปิดแค่นั้นเราก็สามารถใช้งานทีวีได้แล้ว โดยที่เราไม่จำเป็นต้องรู้เลยว่าจริงๆของข้างในมันทำงานยังไง มันถึงแสดงภาพให้เราเห็นได้

เมื่อมองย้อนกลับมาเราจะเห็นว่าทีวีมันมีความเป็น Abstraction ก็คือเราสามารถใช้งานมันได้โดยที่ไม่จำเป็นต้องรู้ว่าภายในมันทำงานยังไง และในแง่ของ Encapsulation มันก็ซ่อนวงจรต่างๆไว้ภายในไม่ให้เราต้องไปรับรู้ แต่ถ้าเราอยากเชื่อมทีวีกับของอย่างอื่น เช่นลำโพง เขาก็จะมีช่องด้านหลังทีวีให้เราไปจิ้มใช้งานกับเขาได้เลย เพราะเขาเปิดมันให้เราใช้งานได้แค่นั้น ส่วนในแง่ของ Component นั้นจะเห็นว่าทีวีที่มันสมบูรณ์แบบในตัวมันเอง เรามีหน้าที่ใช้มันก็พอ ดังนั้นเราก็สามารถนำทีวี ไปใช้งานร่วมกับ Component อื่น เช่น ต่อ AppleTv ต่อลำโพง ต่อเครื่องเกม Nintendo, Xbox, PS4 เข้าไปก็จะสามารถทำงานร่วมกันของอื่นๆได้ทันทีเลย

🎯 บทสรุป

Models ที่ดีจะต้องมีการทำ Abstraction เพื่อให้มันใช้งานได้ง่าย แต่จะต้องคิดถึง Sensitive Data ด้วย ดังนั้นเราก็ต้องนำหลักของ Encapsulation เข้ามาร่วมในการออกแบบด้วยนั่นเอง