🏆Abstraction & Encapsulation
หลังจากที่เข้าใจหลักการของ Abstraction กับ Encapsulation กันไปเรียบร้อยแล้ว ดังนั้นเรามาสรุปความเข้าใจเจ้า 2 ตัวนี้ก่อนว่ามันเกี่ยวเนื่องกันยังไง
🔥 Abstraction
เป็นการแปลงโจทย์ให้เป็น Models เพื่อให้เราเอาไปเขียนโค้ดต่อ
🔥 Encapsulation
เป็นการ ควบคุมสิทธิ์ และทำให้ของต่างๆทำงานร่วมกัน
💖 Abstraction + Encapsulation
เมื่อเราเอาทั้ง 2 แนวคิดนี้มารวมกัน เราจะได้ Models ที่มีการควบคุมสิทธิ์ในการเข้าใช้งาน นั่นเอง ซึ่งประโยชน์ที่เราจะได้ก็คือ Model ของเราจะเป็น Component ที่สามารถเอาไปใช้งานได้ โดยที่คนอื่นไม่จำเป็นต้องสนใจเลยว่าจริงๆมันทำงานยังไง ยกตัวอย่างเช่น ทีวี
เมื่อไหร่ก็ตามที่เราอยากดูทีวี เราก็แค่เดินมากดปุ่มเปิดแค่นั้นเราก็สามารถใช้งานทีวีได้แล้ว โดยที่เราไม่จำเป็นต้องรู้เลยว่าจริงๆของข้างในมันทำงานยังไง มันถึงแสดงภาพให้เราเห็นได้
เมื่อมองย้อนกลับมาเราจะเห็นว่าทีวีมันมีความเป็น Abstraction ก็คือเราสามารถใช้งานมันได้โดยที่ไม่จำเป็นต้องรู้ว่าภายในมันทำงานยังไง และในแง่ของ Encapsulation มันก็ซ่อนวงจรต่างๆไว้ภายในไม่ให้เราต้องไปรับรู้ แต่ถ้าเราอยากเชื่อมทีวีกับของอย่างอื่น เช่นลำโพง เขาก็จะมีช่องด้านหลังทีวีให้เราไปจิ้มใช้งานกับเขาได้เลย เพราะเขาเปิดมันให้เราใช้งานได้แค่นั้น ส่วนในแง่ของ Component นั้นจะเห็นว่าทีวีที่มันสมบูรณ์แบบในตัวมันเอง เรามีหน้าที่ใช้มันก็พอ ดังนั้นเราก็สามารถนำทีวี ไปใช้งานร่วมกับ Component อื่น เช่น ต่อ AppleTv ต่อลำโพง ต่อเครื่องเกม Nintendo, Xbox, PS4 เข้าไปก็จะสามารถทำงานร่วมกันของอื่นๆได้ทันทีเลย
🎯 บทสรุป
Models ที่ดีจะต้องมีการทำ Abstraction เพื่อให้มันใช้งานได้ง่าย แต่จะต้องคิดถึง Sensitive Data ด้วย ดังนั้นเราก็ต้องนำหลักของ Encapsulation เข้ามาร่วมในการออกแบบด้วยนั่นเอง
Last updated