DDD Notes

Diambil dan disarikan dari casey charlton

Bounded Context

Context merupakan sisi yg berhubungan dengan bisnis sedangkan bounded context merupakan hal yg berhubungan dengan teknikal implementation
Dengan membagi aplikasi kita menjadi banyak context kita mendukung modularity, separation of concern dan loose coupling. Karena satu model tidaklah cukup untuk menggambarkan suatu permasalahan. Karena masing2 memiliki sudut pandang yg berbeda2

Contohnya adalah pada aplikasi ecommerce
User melihat dari sisi Shopping Context. Yaitu mengadd barang, memasukkan ke shopping basket, search dan browse catalog dan kemudian hasil dari transaksi tersebut akan di pass ke Ordering Context. Ordering Context akan melakukan koordinasi dengan Inventory Context yg berhubungan dengan catalog dan stock pada warehouse

Masing2 bouded context memliki code dan datanya tersendiri dan model yg tersendiri. Bounded Context merupakan semi autonomous system.

Bounded Context dapat berinteraksi dengan Bounded Context yg lain dengan Context Map.

Aggregate Root

Cara menentukan aggregate adalah pengelompokan. Memikirkan data yg bisa di cascade pada saat delete akan membantu menentukan aggregate.

Repository

Repository berfungsi seolah2 seperti in memory collection. Operasi read yg dapat kita lakukan adalah find aggregate root by unique id.
DDD principle -> Persistence Ignorance
Domain only no database. Jaga agar code domain tetap clean dari infrastructure.

Command Query Separation

CQS menyarankan kita untuk memisahkan reporting model dari domain model. Keduanya terpisah secara context.

No Setter Getter

Domain tidak boleh hanya mengexpose setter dan getter. Hal ini dapat menyebabkan domain kita menjadi anaemic. Domain memiliki behavior.

Double Dispatch Pattern

Kita dapat menggunakan Visitor Pattern dan pengembangannya Double Dispacth pattern. Double dispatch pattern ini intinya adalah kita melewatkan object ke dalam suatu fungsi dan fungsi tersebut akan mengolah data sesuai dengan object yg dilewatkan. Jadi responsibility pengolahan tersebut dikembalikan ke object yg dilewatkan tadi. Biasanya kan parameter itu yg diolah. Tetapi pada kasus double dispatch. Object yg dilewatkan itu yg mengolah. Tanggung jawab dikembalikan lagi ke parameternya. Double dispatch pattern dapat mencegah dependency injection.

  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: