Saya akan masuk ke Arsitektur Bersih dan mengangkat level Android saya dari MVC ke MVP , memperkenalkan DI dengan Dagger 2, Reaktivitas dengan RxJava 2, dan tentu saja Java 8.
Dalam arsitektur bersih MVP ada lapisan antara entitas (di datastores) dan presenter yang harus mengaksesnya. Lapisan ini adalah "Use Case" . Sebuah use case itu idealnya sebuah antarmuka, yang mengimplementasikan SATU operasi pada SATU entitas.
Saya juga tahu bahwa Clear Architecture " menjerit ", dalam arti proyeknya sangat mudah dibaca karena banyaknya kelas di dalamnya.
Sekarang, dalam proyek saya, saya memiliki sekitar 6 entitas yang berbeda , dan tentu saja, setiap repositori entitas memiliki setidaknya 4 metode (biasanya mendapatkan, menambah, menghapus, memperbarui) untuk mengaksesnya .. jadi, 6 * 4 = 24 .
Jika apa yang saya mengerti sampai sekarang tentang Arsitektur Bersih, saya akan memiliki 24 UseCase.
Ini banyak kelas jika dibandingkan dengan hanya 6 controller di MVC ..
Apakah saya harus membuat 24 use case?
Saya akan sangat menghargai klarifikasi oleh seseorang yang sudah menggunakannya dengan sukses.
Terima kasih, Jack
Jawaban:
Hanya jika semua yang Anda tulis adalah CRUD .
Lihat diagram di bawah ini:
Pernyataan Anda adalah bahwa Anda akan memiliki enam entitas yang berbeda, dan 4 metode (Buat, Baca, Perbarui dan Hapus) untuk setiap entitas. Tapi itu hanya berlaku di lingkaran kuning di tengah diagram (lapisan Entitas). Tidak ada gunanya untuk membuat 24 metode di lapisan Kasus Penggunaan yang hanya melewati panggilan CRUD ke lapisan Entitas.
A Use Case bukan "Tambahkan Catatan Pelanggan." Case Use lebih sesuai dengan garis "Jual barang ke pelanggan" (yang melibatkan entitas Pelanggan, Produk, dan Inventaris) atau "Cetak faktur" (yang melibatkan entitas yang sama, selain Header Faktur dan Item Faktur Line ).
Saat Anda membuat Use Cases, Anda harus memikirkan transaksi bisnis, bukan metode CRUD.
Agregat Bacaan Lebih Lanjut
- sekelompok objek domain yang dapat diperlakukan sebagai satu unit
sumber
Anda benar jika setiap Operasi CRUD diterjemahkan dalam satu UseCase. Tetapi UseCase juga dapat terdiri dari beberapa Operasi CRUD.
UseCase adalah model terpisah yang mengumpulkan informasi dari sumber data yang berbeda dan menyiapkan komunikasi ke data sink. Mungkin ada beberapa Operasi CRUD yang terlibat.
Jadi pikirkan sebuah UseCase di mana membuat faktur untuk pelanggan DAN menciptakan juga pelanggan itu sendiri karena dia tidak ada dalam sistem. Anda memiliki satu UseCase yang menghasilkan setidaknya dua Operasi Buat dalam satu transaksi.
sumber
Definisi Anda tentang Use Case salah, Use Case adalah kelas yang menerapkan aturan bisnis, tidak perlu menjadi operasi CRUD, itu bisa menjadi operasi multi langkah yang kompleks
sumber