Domain Event

Saya menemukan artikel bagus mengenai domain event dan hal-hal yg berhubungan dengan pemodelan event pada oo.

PoEAA
Pengenalan Mengenai Event
Domain Event

Dengan memperkenalkan event pada system kita memperoleh berbagai macam keuntungan. Salah satu yg paling mecolok adalah loose couple.

Domain itu haruslah fully encapsulated tidak ada infrastructure yg masuk ke dalam. Yang ada hanya lah logic business. Bagaimana jika kita membutuhkan hasil perhitungan atau kalkulasi atau bahkan notifikasi tentang berlansungnya kejadian pada internal domain. Biasnya pilihan yg dilakukan adalah menginject service atau repository ke dalam domain model. Ini adalah salah satu contoh kebocoran infrastructure pada domain model.
Kita dapat memperkenalakan konsep domain event. Jadi ketika terjadi perubahan state atau sesuatu yg merupakan interest dari external domain event tersebut akan dipublish dan pihak2 yg berminat akan register ke sana dan mendapatkannya.

Pada .NET hal ini dapat dilakukan dengan Events And Delegate Model. Kita harus memiliki suatu tempat registrasi terhadap event yg terjadi di domain. Sehingga pihak2 yg terkait dapat register ke tempat tersebut. Jadi mediatornya adalah bus tersebut. Subscriber dan publisher tidak berhubungan secara langsung tetapi melalui mediator bus.

Penerapan nya dapat dibaca di Event Collaboration Pattern di http://martinfowler.com/eaaDev/EventCollaboration.html dan juga dari article udi dahan pada link berikut ini http://www.udidahan.com/2008/02/29/how-to-create-fully-encapsulated-domain-models/ dan http://www.udidahan.com/2008/08/25/domain-events-take-2/

Advertisement
  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 )

Connecting to %s

%d bloggers like this: