Home > Domain Driven Design > Value Objects

Value Objects

Apakah semua object harus memiliki identity ? Apakah kita akan membuat semua object entity ?

Entity memang mudah ditrack. Karena memiliki identity. Tetapi membuat identity tersebut pun bukan hal yg mudah. Harus dijamin bahwa identity tersebut unique. Semua harus unique. Harus dipikirkan dengan matang. Dan juga bisa gawat klo salah2 menentukan. Dan juga masalah performance muncul jika harus membuat semua object entity. Karena harus dijamin hanya ada boleh satu satu instance untuk tiap object.

Contohnya Aplikasi Menggambar. Ditampilkan canvas dan user dapat menggambar point atau line dengan ketebalan, warna, dan style. Jadi kita akan membuat kelas Point dan program dapat menciptakan instance dari klas ini untuk setiap point yang ada di canvas. Point tersebut mengandung informasi yg brhubungan dengan screen atau kordinat dari canvas. Trus.. Identitynya apa ?? Ga ada. Emang ada kelangsungan hidupnya ?? Yg dibutuhkan kan hanya kordinatnya aja.

Kadang kita tidak memperdulikan object yg mana. Kita hanya butuh nilainya saja. Object yg tidak memiliki identitas dan hanya dibutuhkan karena nilainya saja adalah Value Objects. Contohnya uang. Yg kita butuhkan adalah nilanya saja. Mw object yg mana juga ga perduli. Mw ditukar juga ga masalah. asalkan nilainya sama.

Tukar uang itu bisa. Brarti Value Object.
Tukar Istri itu bisa ga ?? TIDAK. Brarti Entity.

jadi sesuatu yg bisa dipertukarkan asal nilanya sama. itu value object.

Karena value object tidak memiliki identitas maka kita bisa create dan remove sesuka hati kita. Ga masalah. Karen toh ga ada bedanya. Hilang satu. Ganti aja dengan yg baru.

Value object sangat disarankan immutable. Tidak dapat diubah nilainya. Jadi tidak ada setter. Dicreate dengan menggunakan constructor dan tidak diubah2 attributenya selama masa hidupnya. Jadi jika kita butuh object dengan nilai yg berbeda ya kita create aja lagi. Klo sama pacar bisa ga ya ?? Makanya ada lagu kau bukan dirinya … hahahahaha

Value object bisa dishare jika dia immutable. Untuk meningkatkan performance. Agar tidak terjadi ledakan object. Terlalu banyak object di dalam memory. Tetapi ingat harus immutable.

Jika value object dibutuhkan ditempat lain maka ya tinggal pass by value aja. Melakukan Copy terhadap Value object sangat simple hanya tinggal menyamakan attribute saja. dan create baru berdasarkan attribute tersebut.

Value object dapat mengandung value object yg lain. Juga dapat memiliki reference ke entity.

  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: