Home > Domain Driven Design > Spesification dan Repository

Spesification dan Repository

Dengan menggunakan specification pattern kita dapat menulis code sebagai berikut :

IEnumerable<Customer> customers = CustomerRepository.AllMatching(CustomerSpecifications.IsGoldCustomer);

Jadi kita dapat mereuse spesifikasi dari domain dan menggunakannya pada repository sebagai metode untuk melakukan query.

Tetapi hal tersebut juga menimbulkan masalah. Repository kehilangan abstraksi. Isi dari spesifikasi sebenarnya adalah predikat.Nah jadi sebenarnya yg dilakukan oleh repository adalah meload semua entity dan menjalankan spesifikasi tersebut pada semua entity. Contohn nya untuk customer

Nah kompleksitasnya O(N). Kita harus melakukan iterasi pada setiap object customer. Blum lagi kita harus meload semuanya dari database.

Kontrak Repository juga menjadi lemah. Karena kita akan melewatkan spesifikasi sehingga nama method repo menjadi umum.

Query Object berbeda dengan Spesification meskipun berhubungan.
Composite specification. Menggabungkan spesifikasi sehingga mudah membentuk query object.

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: