Lapisan Abstraksi dan Tingkat Ketidaktahuan adalah konsep yang berbeda. Abstraksi adalah agregasi dan penamaan bermakna sejumlah elemen seperti potongan data atau instruksi program, misalnya konsep panggilan file atau metode, sedangkan tipuan adalah decoupling entitas untuk memfasilitasi penundaan realisasi hubungan mereka, misalnya, penggunaan JNDI untuk memisahkan identifikasi sumber daya dalam suatu program dari sumber daya aktual yang pada akhirnya dapat disediakan oleh wadah aplikasi.
Seringkali konsep berjalan beriringan dan mana yang berlaku untuk konstruksi tertentu tergantung pada latihan atau diskusi apa yang sedang berlangsung. Misalnya, sifat abstrak dari antarmuka adalah penting ketika mempelajari atau mendokumentasikan API; properti tipuannya penting ketika menambahkan ekstensibilitas atau membuat tes untuk suatu aplikasi.
Lapisan abstraksi adalah agregasi abstraksi dan memberi mereka integritas konseptual dan konsistensi penggunaan. CreateProcess adalah nama API win32 untuk sekelompok kode yang membangun dan menjalankan suatu proses. "Nama" penting untuk konteks ini karena jika kita memanggil fungsi tersebut seperti DoAllocMemThenMakeEnvThenFindEntryPoint ... itu benar-benar tidak akan terlalu abstrak. Lapisan seperti Win32 API memberikan penghalang di mana programmer mungkin disarankan untuk tidak berani. Ini menghilangkan kompleksitas dari sudut pandang penelepon dengan biaya daya berkurang (fleksibilitas, kinerja dll). Pertukaran ini disorot oleh diskusi yang sering terjadi tentang abstraksi bocor: kita mungkin masih perlu membuat panggilan SQL langsung saat menggunakan Hibernate atau membuat panggilan Win32 saat menggunakan .NET.
Mengenai tipuan, sebagian besar program non-sepele beroperasi dengan beberapa bentuk tipuan kode pengguna, lihat bagian INPUT-OUTPUT COBOL dari sebelum bahtera. Ketika mengakses sumber daya seperti database, kita mungkin melihat penyisipan string koneksi JDBC dalam kode sebagai Level 0 tipuan, koneksi JNDI (yang mendelegasikan pilihan sumber daya ke wadah aplikasi) sebagai Level 1 dan beberapa pegas konstruksi yang memetakan pengidentifikasi JNDI aplikasi ke salah satu dari banyak sumber daya kontainer sebagai Level 2. Beberapa level memungkinkan sejumlah pihak di luar hubungan (dalam hal ini hubungan antara mengeksekusi kode dan database) untuk memanipulasi hubungan itu. Ini berlaku sama untuk komponen program internal seperti antarmuka dan acara.
Kita melihat bahwa, tidak peduli apa kualitas mereka yang lain, abstraksi mengurangi kompleksitas sedangkan tipuan meningkatkannya. Abstraksi mengurangi daya sedangkan tipuan meningkatkannya. Indirection dapat digunakan untuk mengembalikan kekuatan abstraksi dengan membiarkan perilaku default ditimpa oleh callback kustom.