Layer of Abstraction และ Level of Indirection เป็นแนวคิดที่แตกต่าง สิ่งที่เป็นนามธรรมคือการรวมและการตั้งชื่อที่มีความหมายขององค์ประกอบหลายอย่างเช่นชิ้นส่วนของข้อมูลหรือคำสั่งของโปรแกรมเช่นแนวคิดของไฟล์หรือวิธีการเรียกในขณะที่การอ้อมคือการแยกหน่วยงาน ตัวอย่างเช่นการใช้ JNDI เพื่อแยกการระบุทรัพยากรภายในโปรแกรมจากทรัพยากรจริงซึ่งอาจมีให้ในที่สุดโดยคอนเทนเนอร์ของแอปพลิเคชัน
บ่อยครั้งที่แนวคิดรวบยอดไปด้วยกันและสิ่งใดที่นำไปใช้กับโครงสร้างเฉพาะนั้นขึ้นอยู่กับการฝึกซ้อมหรือการอภิปรายที่กำลังดำเนินอยู่ ตัวอย่างเช่นลักษณะเชิงนามธรรมของอินเทอร์เฟซมีความสำคัญเมื่อเรียนรู้หรือบันทึก API คุณสมบัติทางอ้อมนั้นมีความสำคัญเมื่อเพิ่มความสามารถในการขยายหรือสร้างการทดสอบสำหรับแอปพลิเคชัน
เลเยอร์ของนามธรรมคือการรวมของ abstractions และให้พวกเขามีความสมบูรณ์ของแนวคิดและความสอดคล้องของการใช้งาน CreateProcess เป็นชื่อ win32 API สำหรับกลุ่มของรหัสที่สร้างและดำเนินการตามกระบวนการ "ชื่อ" มีความสำคัญต่อบริบทนี้เพราะถ้าเราเรียกใช้ฟังก์ชันเช่น DoAllocMemThenMakeEnvThenFindEntryPoint ... จริง ๆ แล้วมันจะไม่เป็นนามธรรมมาก เลเยอร์เช่น Win32 API นั้นมีสิ่งกีดขวางซึ่งโปรแกรมเมอร์อาจไม่แนะนำให้ทำ มันขจัดความซับซ้อนจากมุมมองของผู้โทรด้วยค่าใช้จ่ายของพลังงานที่ลดลง (ความยืดหยุ่นประสิทธิภาพ ฯลฯ ) การแลกเปลี่ยนนี้ถูกเน้นโดยการอภิปรายบ่อยครั้งของ abstractions รั่ว: เราอาจยังต้องทำการเรียก SQL โดยตรงเมื่อใช้ Hibernate หรือทำการเรียก Win32 เมื่อใช้. NET
เกี่ยวกับทางอ้อมโปรแกรมที่ไม่น่าสนใจส่วนใหญ่ทำงานกับรูปแบบของรหัสผู้ใช้ทางอ้อมเป็นสักขีพยานในส่วน INPUT-OUTPUT ของ COBOL จากก่อนหีบ เมื่อเข้าถึงทรัพยากรเช่นฐานข้อมูลเราอาจเห็นการฝังสตริงการเชื่อมต่อ JDBC ในรหัสเป็นระดับ 0 ทางอ้อมการเชื่อมต่อ JNDI (ซึ่งมอบหมายทางเลือกของทรัพยากรให้กับคอนเทนเนอร์ของแอปพลิเคชัน) เป็นระดับ 1 และโครงสร้างสปริงบางรายการ แอปพลิเคชันตัวระบุ JNDI หนึ่งในหลาย ๆ คอนเทนเนอร์ทรัพยากรในระดับ 2 ระดับหลายระดับอนุญาตให้หลายฝ่ายภายนอกความสัมพันธ์ (ในกรณีนี้ความสัมพันธ์ระหว่างการเรียกใช้รหัสและฐานข้อมูล) เพื่อจัดการความสัมพันธ์นั้น สิ่งนี้ใช้ได้กับองค์ประกอบของโปรแกรมภายในเช่นอินเทอร์เฟซและเหตุการณ์
เราเห็นว่าไม่ว่าคุณสมบัติอื่น ๆ ของพวกเขาสิ่งที่เป็นนามธรรมลดความซับซ้อนในขณะที่ทางอ้อมเพิ่มขึ้น สิ่งที่เป็นนามธรรมช่วยลดพลังงานในขณะที่ทิศทางเพิ่มขึ้น การเปลี่ยนทิศทางสามารถใช้เพื่อเรียกคืนพลังของนามธรรมโดยอนุญาตให้มีการลบล้างพฤติกรรมเริ่มต้นโดยการเรียกกลับที่กำหนดเอง