Alasan utama untuk batas-batas ini adalah pemisahan kekhawatiran . Kode yang mengakses penyimpanan data hanya perlu khawatir tentang mengakses penyimpanan data. Seharusnya tidak bertanggung jawab untuk menegakkan aturan pada data. Selain itu, UI harus bertanggung jawab untuk memperbarui kontrol di UI, mendapatkan nilai dari input pengguna dan menerjemahkannya ke sesuatu yang dapat digunakan oleh lapisan domain, dan tidak lebih. Ini harus memanggil operasi yang disediakan oleh lapisan domain untuk melakukan tindakan yang diperlukan (mis. Simpan file ini). Layanan web yang disebut harus bertanggung jawab untuk mengubah dari media transmisi ke sesuatu yang dapat digunakan oleh lapisan domain, dan kemudian memanggil lapisan domain (sebagian besar alat melakukan banyak pekerjaan untuk Anda).
Pemisahan ini, ketika diterapkan dengan benar dapat memberi Anda kemampuan untuk mengubah bagian-bagian kode Anda tanpa mempengaruhi orang lain. Misalnya, mungkin urutan pengurutan koleksi objek yang dikembalikan perlu diubah. Karena Anda tahu bahwa lapisan yang bertanggung jawab atas manipulasi data (biasanya lapisan logika bisnis) menangani hal-hal ini, Anda dapat dengan mudah mengidentifikasi di mana kode perlu diubah. Serta tidak harus mengubah cara itu diambil dari penyimpanan data, atau aplikasi yang menggunakan domain (UI dan layanan web dari contoh saya di atas).
Tujuan utamanya adalah membuat kode Anda semudah mungkin mempertahankannya.
Sebagai catatan tambahan, beberapa hal tidak dapat dimasukkan ke dalam lapisan domain tertentu (mis. Logging, validasi, dan otorisasi). Barang-barang ini biasanya disebut sebagai masalah lintas sektoral, dan dalam beberapa kasus dapat diperlakukan sebagai lapisan yang berdiri sendiri sehingga semua lapisan lain dapat melihat dan menggunakan.
Secara pribadi saya pikir pendekatan berlapis sudah ketinggalan zaman, dan bahwa pendekatan layanan lebih baik. Anda masih memiliki garis tegas di pasir siapa yang melakukan apa, tetapi itu tidak memaksa Anda untuk menjadi hirarkis. Misalnya, layanan pesanan pembelian, layanan penagihan, dan layanan pengiriman, dari perspektif aplikasi, semua layanan ini mewakili domain Anda, dan penangguhan tanggung jawab yang saya jelaskan di atas masih berlaku dalam konteks ini, baru saja diubah seperti bahwa domain Anda ada di banyak tempat, lebih lanjut menggunakan konsep pemisahan masalah.