अमूर्त की परत और अप्रत्यक्ष का स्तर अलग अवधारणाएं हैं। अमूर्तता कई तत्वों का एकत्रीकरण और सार्थक नामकरण है जैसे कि डेटा या प्रोग्राम निर्देशों के टुकड़े, उदाहरण के लिए किसी फ़ाइल या विधि कॉल की अवधारणा, जबकि अप्रत्यक्षता उनके संबंधों की प्राप्ति के स्थगन की सुविधा के लिए संस्थाओं का डिकम्पलिंग है, उदाहरण के लिए, JNDI का उपयोग वास्तविक संसाधन से एक कार्यक्रम के भीतर एक संसाधन की पहचान को अलग करने के लिए जो अंततः एक आवेदन कंटेनर द्वारा प्रदान किया जा सकता है।
अक्सर अवधारणाएं हाथ से चली जाती हैं और जो एक विशेष निर्माण पर लागू होती है वह इस बात पर निर्भर करती है कि व्यायाम या चर्चा किस प्रगति पर है। उदाहरण के लिए, एपीआई सीखते या दस्तावेज बनाते समय एक इंटरफ़ेस की सार प्रकृति महत्वपूर्ण है; अप्रत्यक्षता की इसकी संपत्ति महत्वपूर्ण है जब एक आवेदन के लिए एक्स्टेंसिबिलिटी को जोड़ने या परीक्षण बनाने के लिए।
अमूर्तता की एक परत अमूर्तता का एकत्रीकरण है और उन्हें एक वैचारिक अखंडता और उपयोग की निरंतरता दे रही है। CreateProcess कोड के एक समूह के लिए win32 एपीआई नाम है जो एक प्रक्रिया बनाता और निष्पादित करता है। "नाम" इस संदर्भ में महत्वपूर्ण है क्योंकि अगर हम फ़ंक्शन को DoAllocMemThenMakeEnvThenFindEntryPoint जैसे कुछ कहते हैं ... तो यह वास्तव में बहुत सार नहीं होगा। Win32 API जैसी एक परत एक अवरोध प्रदान करती है जिसके लिए एक प्रोग्रामर को सलाह दी जा सकती है कि वह उद्यम न करे। यह कम शक्ति (लचीलापन, प्रदर्शन आदि) की कीमत पर कॉलर के दृष्टिकोण से जटिलता को दूर करता है। लीक से हटकर सार के बार-बार चर्चा से इस व्यापार को उजागर किया जाता है: हमें अभी भी हाइबरनेट का उपयोग करते समय प्रत्यक्ष SQL कॉल करने की आवश्यकता हो सकती है। .NET का उपयोग करते समय Win32 कॉल करें।
अप्रत्यक्ष के संबंध में, अधिकांश गैर-तुच्छ कार्यक्रम उपयोगकर्ता के किसी न किसी रूप में कोडित अप्रत्यक्ष रूप से संचालित होते हैं, जो कि COBOL के INPUT-OUTPUT सेक्शन में सन्दूक से पहले दिखाई देते हैं। जब एक डेटाबेस जैसे संसाधन का उपयोग करते हुए हम कोड 0 में एक JDBC कनेक्शन स्ट्रिंग के एम्बेडिंग को लेवल 1 के रूप में देख सकते हैं, एक JNDI कनेक्शन (जो एक एप्लीकेशन कंटेनर के लिए संसाधन की पसंद को दर्शाता है) Level 1 और कुछ स्प्रिंग के रूप में मैप करता है; आवेदन जेएनडीआई पहचानकर्ता कई स्तरों के रूप में कई कंटेनर संसाधनों में से एक है। कई स्तर उस संबंध को हेरफेर करने के लिए संबंध (इस मामले में कोड निष्पादित करने और डेटाबेस के बीच एक संबंध) के लिए कई दलों को बाहरी अनुमति देते हैं। यह आंतरिक प्रोग्राम घटकों जैसे इंटरफेस और घटनाओं पर समान रूप से लागू होता है।
हम देखते हैं कि, कोई बात नहीं उनके अन्य गुण, अमूर्तता जटिलता को कम करती है जबकि अप्रत्यक्षता इसे बढ़ाती है। अमूर्तता शक्ति को कम करती है जबकि अप्रत्यक्षता इसे बढ़ाती है। अप्रत्यक्ष का उपयोग कस्टम कॉलबैक द्वारा डिफ़ॉल्ट व्यवहार को ओवरराइड करने की अनुमति देकर अमूर्तता की शक्ति को बहाल करने के लिए किया जा सकता है।