Home > Domain Driven Design > Service (Part 2) Kesalahan Umum

Service (Part 2) Kesalahan Umum

Kesalahan yg biasa terjadi adalah ketika kita melihat suatu operasi. Kita cenderung mencari pada object apa operasi tersebut cocok diletakkan. Dan kita mungkin saja memaksakannya diletakkan pada salah satu object. Jangan paksakan. Karena jika operasi tersebut merupakan bagian dari UL maka konsep tersebut bisa kabur dan mungkin hilang. Apalagi jika operasi tersebut merupakan konsep yg sangat penting di Domain. Konsep penting harus dibuat seexplicit mungkin. Jadi buatlah kelas untk operasi tersebut.

Jika kita memaksakannya masuk ke dalam satu object. Object tersebut akan kehilangan jati dirinya. Hehehe. Maksudnya udh ga jelas lagi dia bisa apa aja. N mungkin menyalahi SRP. Single Responsibility Principle.

Nah dan biasaya operasi tersebut memiliki keterhubungan dengan banyak object. Nah jika kita paksa masuk ke satu object. Object tersebut jadi memiliki ketergantungan ke banyak object. Dan akan sulit merefactornya di kemudian hari. Padahal kalau bisa satu object dapat dipahami tanpa mengerti object lain. Itulah yg dinamakan encapsulasi dalam level yg lebih tinggi. Cie… cuit cuit. Keren…. Hahhaah

Service juga melakukan hal yg spesifik terhadap permintaan client. Service biasanya dinamakan menurut activity ketimbang entity. Verb ketimbang Noun. Nama service haruslah merupakan bagian dari UL. Parameter dan resultnya haruslah merupakan Domain Objects.

Yg paling penting dari service juga adalah sifatnya yg stateless. Jadi client bisa menggunakan instance mana aja dari Service tanpa peduli sejarah pemakaian si object tersebut apa. TInggal panggil methodnya dan selesai. Si Service tidak akan mengingat bahwa dia pernah dipanggil. Karena Service tidak menyimpan state. Berbeda dengan domain object yg pasti memiliki state.

Eksekusi dari service menggunakan informasi yg dapat diakses secara global dan juga dapat mengubah informasi global tersebut ( memiliki side effect ). Mengakses data global. Mmmm. Brarti bisa dong ada repository di dalam service. Yups. Anda benar. Tetapi keterikatannya hanya sebatas interface. Karena implementasi dari Repository merupakan infrastructure. Contohnya Repository dengan menggunakan NHibernate atau yg lain.

  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: