Home > DDDD, Domain Driven Design > [DDDD] Delta based dan Domain

[DDDD] Delta based dan Domain

Delta based change merupakan konsep utama

Pada pendekatan repository terdahulu adalah kita menyimpan object pada state yg terakhir ke data store. Pendekatan yg dilakukan oleh greg young adalah dia tidak melakukan hal tersebut tetapi menyimpan perubahan2 atau delta perubahan dari aggregate root tersebut.
Pada pendekatan repository yg terdahulu konsep perubahan tersebut pada domain object implicit. Kita hanya mengetahui state sekarang tanpa mengetahui apa2 saja yg telah terjadi pada object itu mulai dari dia di create.

Pada DDDD implicit konsep tersebut diubah jadi explicit dan merupakan bagian dari domain language/Ubiquitos Language.

Domain object interface

Domain object seperti yg sudah dikemukakan di atas bertanggung jawab untuk memberikan perubahannya. Domain object akan memiliki interface dengan salah satu kontraknya adalah untuk memberikan state changes nya. Jadi kita mungkin akan memiliki method pada supertype interface tersebut GetStateChanges().
GetStateChanges() pada domain object tidak hanya bertanggun jawab terhadap perubahan state yg terjadi padanya saja (aggregate root) tetapi juga perubahan yg terjadi pada anak2 nya. State changes tersebut kemudian akan digabungkan dan menjadi satu unit of work.

Bagaimana mekanisme dari aggregate root untuk mengumpulkan state changes dari children nya? Salah satu cara yang paling feasible dilakukan adalah kita mengunjungi satu persatu dari child nya dan mengambil state changes nya. Atau cara yang lain adalah dengan menerapakan prinsip publish and subscribe dimana aggregate root listen terhadap perubahan dari children nya.

Advertisement
Categories: DDDD, Domain Driven Design Tags: ,
  1. ryzam
    August 2, 2009 at 9:00 am

    Sangat menarik, cuma jika kamu bisa tunjukkan dalam bentuk code supaya lebih mudah faham, amat dihargai.

    Saya masih cuba hendak memahami konsep DDDD ini dan seperti amat berat sekali.

  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: