ฉันคิดว่าจะเข้าใจคำถามนี้คุณต้องเข้าใจสิ่งที่เป็นนามธรรม (ฉันขี้เกียจเกินไปที่จะหาคำจำกัดความที่เป็นทางการดังนั้นฉันแน่ใจว่าฉันกำลังจะได้รับ dinged แต่ที่นี่ไป ... ) สิ่งที่เป็นนามธรรมคือเมื่อคุณใช้เรื่องที่ซับซ้อนหรือนิติบุคคลและซ่อนรายละเอียดส่วนใหญ่ ในขณะที่เปิดเผยการทำงานที่ยังคงกำหนดสาระสำคัญของวัตถุนั้น
ฉันเชื่อว่าตัวอย่างที่หนังสือมอบให้คุณคือบ้าน หากคุณมองเข้าไปในบ้านอย่างละเอียดคุณจะเห็นว่ามันทำจากไม้กระดานเล็บหน้าต่างประตู ... แต่ภาพวาดการ์ตูนของบ้านที่อยู่ติดกับภาพถ่ายยังคงเป็นบ้านแม้ว่ามันจะหายไป รายละเอียดเหล่านั้นมากมาย
สิ่งเดียวกันกับซอฟต์แวร์ เมื่อใดก็ตามที่คุณเขียนโปรแกรมเหมือนกับที่หนังสือแนะนำคุณจะต้องคิดว่าซอฟต์แวร์ของคุณเป็นเลเยอร์ โปรแกรมที่กำหนดสามารถมีเลเยอร์ได้ดีกว่าร้อยเลเยอร์ ที่ด้านล่างคุณอาจมีคำสั่งแอสเซมบลีซึ่งทำงานบน CPU ในระดับที่สูงกว่าคำแนะนำเหล่านี้อาจรวมกันเป็นรูปแบบดิสก์ I / O รูทีนในระดับสูงกว่าคุณไม่จำเป็นต้องทำงานกับ Disk I / O โดยตรงเนื่องจากคุณสามารถใช้ฟังก์ชัน Windows เพื่อเปิด / อ่าน / เขียน / ค้นหา / ปิดไฟล์ได้อย่างง่ายดาย สิ่งเหล่านี้ล้วนเป็นรูปธรรมก่อนที่คุณจะไปถึงรหัสแอปพลิเคชันของคุณเอง
ภายในรหัสของคุณเลเยอร์สิ่งที่เป็นนามธรรมจะดำเนินต่อไป คุณอาจมีรูทีนการจัดการสตริง / เครือข่าย / ข้อมูลในระดับต่ำกว่า ในระดับที่สูงขึ้นคุณอาจรวมรูทีนเหล่านั้นลงในระบบย่อยที่กำหนดการจัดการผู้ใช้, เลเยอร์ UI, การเข้าถึงฐานข้อมูล อีกชั้นหนึ่งระบบย่อยเหล่านี้อาจรวมเข้ากับส่วนประกอบเซิร์ฟเวอร์ที่มารวมกันเพื่อเป็นส่วนหนึ่งของระบบองค์กรขนาดใหญ่
กุญแจสำคัญในแต่ละเลเยอร์สิ่งที่เป็นนามธรรมเหล่านี้คือแต่ละอันซ่อนรายละเอียดที่เปิดเผยโดยเลเยอร์ก่อนหน้าและนำเสนออินเทอร์เฟซที่สะอาดมากซึ่งจะใช้ในเลเยอร์ถัดไป ในการเปิดไฟล์คุณไม่จำเป็นต้องรู้วิธีการเขียนแต่ละเซกเตอร์หรือฮาร์ดแวร์ขัดจังหวะในการประมวลผล แต่ถ้าคุณเริ่มเดินทางลงโซ่เลเยอร์สิ่งที่เป็นนามธรรมคุณจะสามารถติดตามจากการเรียกใช้ฟังก์ชั่น Write () ได้ตลอดจนถึงคำสั่งที่ถูกส่งไปยังตัวควบคุมฮาร์ดไดรฟ์
สิ่งที่ผู้เขียนบอกให้คุณทำคือเมื่อคุณกำหนดชั้นเรียนหรือฟังก์ชั่นคิดเกี่ยวกับสิ่งที่คุณเป็นชั้น หากคุณมีคลาสที่จัดการระบบย่อยและวัตถุผู้ใช้คลาสเดียวกันไม่ควรทำการจัดการสตริงในระดับต่ำหรือมีทั้งกลุ่มของตัวแปรเพียงแค่สำหรับการโทรซ็อกเก็ต นั่นคือการละเมิดการข้ามสิ่งที่เป็นนามธรรมและการมีคลาส / ฟังก์ชันเดียวทำสิ่งเดียวเท่านั้น (SRP - หลักการความรับผิดชอบเดี่ยว)