Saya sangat menyukai konsep-konsep dalam video The Principles of Clean Architecture oleh Paman Bob Martin. Tetapi saya merasa bahwa pola ini seperti kombinasi dari pola Abstrak Pabrik dan Pembangun pada intinya.
Bahkan tidak dekat.
Ketika Anda melihat ini:
Anda sedang melihat desain grafik objek. Ini menentukan apa yang tahu tentang apa. Apa yang hilang dari cerita ini adalah bagaimana grafik objek itu dibangun. Maaf, tetapi Anda tidak akan menemukannya di sini. Tidak ada penyebutan konstruksi.
Anda dapat membangun semua ini tanpa pabrik dan pembangun abstrak. Saya tahu karena saya sudah melakukannya . Saya bahkan tidak berangkat untuk menghindarinya. Aku mencintai mereka. Aku hanya tidak membutuhkannya. Saya hanya menggunakan referensi lewat. Ketergantungan Injeksi adalah istilah mewah untuk itu.
Sebenarnya, saya bisa membangun semua yang Anda lihat dalam diagram itu di main. Kemudian panggil satu metode pada satu objek untuk memulai semuanya.
Sekarang segala sesuatunya harus ada sebelum Anda bisa mendorongnya ke hal lain. Saya menjelajahinya di sini dan memberikan diagram kecil yang lucu ini:
Dan Anda dapat membangun semua itu tanpa meninggalkan main()
.
Saya akan merekomendasikan menggunakan pembangun dan pabrik ketika Anda ingin memecah tumpukan kode konstruksi prosedural menjadi potongan konseptual berukuran bagus menggigit. Tetapi tidak ada apa pun dalam arsitektur bersih atau arsitektur kata kunci lainnya yang menuntut Anda melakukannya. Jadi, jika Anda ingin bertahan main()
, baiklah. Tolong, kasihanilah .
Apakah "Arsitektur Bersih" oleh Bob Martin adalah aturan praktis untuk semua arsitektur atau itu hanya salah satu opsi?
Saya menganggap Arsitektur Bersih sebagai kata kunci yang digunakan untuk mengarahkan orang ke blog dan buku. Blog dan buku itu memiliki penjelasan yang sangat bagus tentang Arsitektur tua yang sangat mirip dengan nama lama yang digunakan untuk mengarahkan orang ke blog yang lebih tua dan buku yang lebih tua. Secara khusus Bawang serta Port dan Adaptor. Tidak ada satu-satunya pilihan arsitektur yang Anda miliki.
Saya suka Paman Bob karena dia adalah pembicara dan penulis publik yang luar biasa. Dia membuatku memikirkan hal-hal yang tidak akan kumiliki. Tetapi jika Anda membiarkan hal itu mengubah Anda menjadi seorang fanatik agama yang bersikeras bahwa segala sesuatu harus dilakukan dengan caranya sendiri, Anda akan segera menemukan bahwa memperbarui dokumentasi adalah yang paling dekat, saya akan membiarkan Anda membuka kode saya.
Arsitektur kata kunci berguna ketika Anda memiliki kode hidup lama yang perlu bertahan saat dunia berubah di sekitarnya. Saat itulah ia bersinar. Jika dunia stabil dibandingkan dengan kode, maka Anda membuat sesuatu menjadi mewah tanpa alasan yang bagus.
Tidak peduli seberapa hebat sesuatu yang tampak ada konteks yang Anda bisa masukkan itu akan membuatnya masuk akal Maaf, ini bukan peluru perak juga.
Tetapi dalam video saya merasa dia menyarankan bahwa arsitektur yang bersih harus memiliki batas yang jelas antara logika bisnis dan kerangka kerja. Kerangka kerja (web, android, dll.) Harus berupa plugin yang terhubung ke logika bisnis. Dia bahkan secara halus mengejek rel dalam video.
Kamu benar. Dia melakukannya. Paman Bob merasa bahwa kerangka kerja dapat diperlakukan seperti perpustakaan. Dan mereka bisa. Tetapi bahkan keputusan itu harus Anda bayar.
Apa yang ingin dilestarikan oleh Tn. Martin adalah ruang di mana bahasa tujuan umum Anda masih bersifat umum. Anda menyerah ketika Anda menyebarkan kerangka kerja di mana-mana. Ketika Anda melakukan itu, Anda sedang menuju ke jalur morphing bahasa Anda menjadi sesuatu yang disebut bahasa spesifik domain. HTML adalah bahasa khusus domain. Itu melakukan pekerjaannya dengan sangat baik tetapi ada pekerjaan lain yang tidak bisa dilakukan sama sekali.
Selama kebutuhan Anda diantisipasi oleh kerangka kerja, segalanya akan berjalan sangat lancar. Sangat menyenangkan untuk mengantisipasi kebutuhan Anda. Ini menempatkan Anda dalam sebuah kotak yang membuat hal-hal sederhana. Hanya mengerti apa yang Anda menyerah untuk mendapatkan ini. Jika Anda menyebarkan Spring di mana-mana Anda tidak dapat mengiklankannya sebagai pekerjaan Java lagi. Ini pekerjaan Java / Spring. Saya bisa mengatakan hal yang sama tentang Ruby dan Rails tetapi Rails sudah lama makan siang Ruby.